{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Switch between processing models","siteUrl":"https://docs.peachfinance.com","description":"API and product documentation for Peach Finance, a lending-as-a-service platform."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"switch-between-processing-models","__idx":0},"children":["Switch between processing models"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"procedure-overview","__idx":1},"children":["Procedure overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide covers moving a company between Peach-managed processing, Bring Your Own Bank (BYOB) processing and external processing. For each direction, it states what changes, who can make each change, and what happens to your borrowers' payment instruments, autopay plans, payments already in progress and investor settlement. It is for the integration engineer and the operations lead at a lender that is moving. Peach makes every change to your company's configuration, so agree with Peach which move applies to your company before you begin."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide does not cover setting up each model. For that, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/peach-processing"},"children":["Set up Peach-managed payment processing"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing"},"children":["Set up Bring Your Own Bank (BYOB) processing"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing"},"children":["Set up external payment processing"]},"."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"From"},"children":["From"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"To"},"children":["To"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Section"},"children":["Section"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Peach-managed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["External"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#peach-managed-to-external"},"children":["Peach-managed to external"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["BYOB"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["External"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#byob-to-external"},"children":["BYOB to external"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["External"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Peach-managed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#external-to-peach-managed"},"children":["External to Peach-managed"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["External"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["BYOB"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#external-to-byob"},"children":["External to BYOB"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Peach-managed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["BYOB"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#peach-managed-to-byob"},"children":["Peach-managed to BYOB"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["BYOB"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Peach-managed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#byob-to-peach-managed"},"children":["BYOB to Peach-managed"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-begin","__idx":2},"children":["Before you begin"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"prerequisites","__idx":3},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Peach has agreed to the move with you. Peach makes every change to your company's configuration; you can't make these changes yourself."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An API key with the permissions for the steps you perform in your direction:"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Your step"},"children":["Your step"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Permissions"},"children":["Permissions"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Convert a payment instrument to external"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.instrument:update"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.instrument:external"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Change the instrument on an autopay plan"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["autopay:update"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create, update or delete your own payment processor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.processor:create"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.processor:update"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.processor:delete"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update a payment's status after a move to external processing"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction:update"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"assumed-knowledge","__idx":4},"children":["Assumed knowledge"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#two-different-isexternal-fields"},"children":["Two different isExternal fields"]}," — Required to tell the instrument setting from the processor setting in every direction."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/autopay"},"children":["Set up autopay"]}," — How an autopay plan and its agreement document fit together."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/how-settlement-works"},"children":["How settlement works"]}," — How collected payments become investor settlements."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"key-concepts","__idx":5},"children":["Key concepts"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.payment.processedByPeach"]}," — The company setting that says Peach processes your payments: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," under Peach-managed and BYOB processing, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," under external processing. Only Peach can change it. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#step-1-have-peach-turn-on-external-processing"},"children":["Set up external payment processing"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.payment.disablePaymentProcessing"]}," — A separate company setting. When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", Peach cancels your Peach-processed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," payments on their scheduled date, cancels Peach-processed ACH payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," when it next builds an ACH file while ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," is still ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", refuses new payments that aren't external with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["402"]},", creates new payment instruments as external, creates no autopay payments, and sends no micro-deposits. A request that sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]}," still needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.instrument:external"]},", and returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]}," without it. A bank account linked through Plaid is the exception to the instrument rule: Peach currently doesn't create it as external, and accepts it, because ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," is still ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},". Peach currently refuses a Plaid-linked account only when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"; see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#instruments-borrowers-add-in-the-borrower-portal"},"children":["Set up external payment processing"]},". Peach-processed ACH payments already in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," still move to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["succeeded"]},", and investor settlement continues. It defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.payment.scheduleAutopayTransactions"]}," — When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," means Peach creates ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," payments from your autopay plans. It defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#step-7-handle-autopay"},"children":["Handle autopay"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Instrument ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," — On a payment instrument, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," means Peach records its payments but doesn't move the money. Each new payment takes the value from its instrument."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Default ACH processor — Your active processor with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDefault: true"]}," receives your new ACH payments, unless the loan type names its own ACH processor. With neither, Peach's own processor does. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing#step-3-make-the-processor-your-only-active-default"},"children":["Step 3 of the BYOB guide"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-procedure","__idx":6},"children":["The procedure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each direction in the following sections lists the changes the move needs and who can make each one. The changes are grouped by what they affect. They are not an order of steps: Peach sets the date and the order of its own steps for each move."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two facts apply to every direction. Peach performs every change to company configuration. And Peach sets a payment's processor and its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," value when the payment is created, and a later change doesn't alter either. A change can still affect payments already in progress. When Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", it stops filing Peach-processed ACH payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]},", stops charging card payments, and stops settling collected payments that are not yet settled; they are not settled automatically. Disabling payment processing cancels existing Peach-processed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," payments, and deactivating your own processor stops the filing of its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]},". It also stops Peach from reading your bank's confirmation and return files for that processor, unless another active processor uses the same SFTP host, username, inbox folder and file-name pattern."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"peach-managed-to-external","__idx":7},"children":["Peach-managed to external"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"have-peach-turn-off-peach-managed-processing","__idx":8},"children":["Have Peach turn off Peach-managed processing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Peach performs this step. Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," for your company. From then on, Peach creates a new payment instrument as external when the request leaves ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," out or sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", and returns no error. A request that sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]}," still needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.instrument:external"]},", and returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]}," without it. A bank account linked through Plaid is currently refused; see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#instruments-borrowers-add-in-the-borrower-portal"},"children":["Set up external payment processing"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After this step, a new instrument created without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," comes back with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"convert-your-existing-payment-instruments","__idx":9},"children":["Convert your existing payment instruments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each instrument is converted one at a time, by your integration or by Peach; agree with Peach who does it. Nothing converts your existing instruments automatically. Each one keeps ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: false"]}," until it is updated, and every payment created on it is a Peach-processed payment."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To convert one, send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]}," in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/people/{personId}/payment-instruments/{paymentInstrumentId}"]},". The key needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.instrument:external"]},". The API reference doesn't list ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," among the fields this request accepts, but Peach applies it. A Peach user can make the same request."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"PUT /api/people/{personId}/payment-instruments/{paymentInstrumentId}\nContent-Type: application/json\nX-API-KEY: <YOUR-API-KEY>\n\n{\n  \"isExternal\": true\n}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sending the same value again changes nothing more. Payments already created on the instrument keep their ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," value; only payments created afterward are external. The response shows ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"point-autopay-at-external-instruments","__idx":10},"children":["Point autopay at external instruments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An autopay plan creates its payments from its payment instrument, so a plan on a converted instrument creates external payments. To move a plan to a different instrument, send the new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentInstrumentId"]}," in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/people/{personId}/loans/{loanId}/autopay"]},". The instrument must be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},". For an external instrument, the request doesn't need ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["agreementDocumentId"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the move, Peach creates ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," payments from your autopay plans only if Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduleAutopayTransactions"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," for your company. With the default ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", you create them yourself, as in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#step-7-handle-autopay"},"children":["Handle autopay"]},". If Peach disables payment processing, it creates no autopay payments at all."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduleAutopayTransactions"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", an autopay plan still on an instrument that hasn't been converted creates Peach-processed payments, which get stuck as described in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#what-happens-to-payments-already-in-progress"},"children":["What happens to payments already in progress"]},". With the default ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", Peach creates no payments from that plan."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-happens-to-payments-already-in-progress","__idx":11},"children":["What happens to payments already in progress"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["What happens depends on which setting Peach changes."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If Peach only turns off Peach-managed processing, nothing is canceled or converted:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Peach-processed payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," still moves to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," on its date. A payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," counts as applied to the loan."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Peach never files a Peach-processed ACH payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]},", because ACH files are built only for companies that Peach processes for. Card processing skips these companies too, so a card payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," is never charged. These payments stay in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Peach-processed ACH payment already in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," still moves to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["succeeded"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A new Peach-processed payment created after the switch gets no processor."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"danger","name":"Stuck payments count as paid"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A payment left in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," after Peach turns off Peach-managed processing is applied to the loan, but Peach never collects it. Instruments and autopay plans that haven't been converted keep creating more of these payments."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If Peach disables payment processing instead (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disablePaymentProcessing"]},"), Peach cancels your Peach-processed payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," on their scheduled date. It also cancels any Peach-processed ACH payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," when it next builds an ACH file. External scheduled payments are not canceled. Peach creates no autopay payments while processing is disabled."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-happens-to-investor-settlement","__idx":12},"children":["What happens to investor settlement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Peach does no investor settlement for external payments, and its daily settlement run skips companies that Peach doesn't process payments for. After the switch:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Collected payments not yet rolled into a settlement are not settled to investors automatically."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A payment that was ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," at the switch and succeeds later is not settled automatically either."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Settlements already waiting to be funded still fund and are filed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"take-over-payment-processing","__idx":13},"children":["Take over payment processing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From the switch, you process your borrowers' payments and report each status to Peach. Peach sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.due.today"]}," for each external payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," on its date, and keeps sending borrower notices for the statuses you report. Follow Steps 2 to 8 of ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing#step-2-get-the-api-key-permissions"},"children":["Set up external payment processing"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can also update the status of any payment, including payments Peach created. While Peach processed your payments, only Peach could update a Peach-processed payment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"byob-to-external","__idx":14},"children":["BYOB to external"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every change in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#peach-managed-to-external"},"children":["Peach-managed to external"]}," applies. Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", your instruments and autopay plans need converting, and investor settlement stops in the same way."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your own processor's payments are affected too. Peach builds ACH files only for companies it processes for, so once the setting is off, Peach files nothing for your processor. Its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," stay there, and its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," still move to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["succeeded"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep your processor ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," until its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," have succeeded, its settlements waiting to be funded have funded, and your bank's return window for its payments and settlement payouts has passed. Peach funds settlements only through active settlement-required processors. While a processor is inactive, Peach doesn't read its confirmation or return files, unless another active processor uses the same SFTP host, username, inbox folder and file-name pattern. Until the files are read, returns on its payments and settlement payouts aren't recorded, and if the processor receives confirmation files, its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," don't move to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["succeeded"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"external-to-peach-managed","__idx":15},"children":["External to Peach-managed"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"have-peach-turn-on-peach-managed-processing","__idx":16},"children":["Have Peach turn on Peach-managed processing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Peach performs this step. Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," for your company. From then on, a new instrument is Peach-processed unless the request sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]},". Peach validates the routing number of each new Peach-processed bank account, and sends micro-deposits to verify it when your company has micro-deposit verification turned on."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An instrument created before this step is external, because Peach can't create a Peach-processed instrument for a company it doesn't process for."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After this step, a new instrument created without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," comes back with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: false"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"replace-your-borrowers-external-bank-accounts","__idx":17},"children":["Replace your borrowers' external bank accounts"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your existing external instruments stay external, and their payments stay record-only. Peach can't process a payment from an external bank account that holds only the last digits of the account number. When an external bank account is created, the last two to four digits are enough, and no request can change an account number afterward."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add each borrower's bank account again as a new, Peach-processed instrument with the full account number, as in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/peach-processing#step-1-add-a-borrowers-bank-account"},"children":["Step 1 of the Peach-managed guide"]},". Either your integration or the borrower can add it; your integration can do so only if it holds the full account number. A new Peach-processed bank account is unverified until micro-deposits verify it, or until a key with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.instrument:skip.verification"]}," sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verified: true"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once an instrument is Peach-processed, your key can change its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," only from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inactive"]},". Only Peach can make the other status changes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"point-autopay-at-the-new-instruments","__idx":18},"children":["Point autopay at the new instruments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Move each autopay plan to the borrower's new instrument with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/people/{personId}/loans/{loanId}/autopay"]},". For a Peach-processed instrument, the request needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["agreementDocumentId"]}," for an accepted autopay agreement on the loan, or it returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/autopay#step-2-handle-the-autopay-agreement-document"},"children":["Step 2 of the autopay guide"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once Peach processes your payments, it creates the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," payments from your autopay plans."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-happens-to-existing-payments-and-investor-settlement","__idx":19},"children":["What happens to existing payments and investor settlement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payments already created on external instruments stay external."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From the switch, Peach's daily settlement run includes your company again. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/how-settlement-works"},"children":["How settlement works"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"external-to-byob","__idx":20},"children":["External to BYOB"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every change in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#external-to-peach-managed"},"children":["External to Peach-managed"]}," applies: Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", your integration or your borrowers add the borrowers' bank accounts again, and you point autopay at the new instruments."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You also set up your own bank's processor and make it your only active default, as in Steps 2 and 3 of ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing#step-2-create-the-payment-processor"},"children":["Set up Bring Your Own Bank (BYOB) processing"]},", and complete Steps 4 to 6 (investors, settlement instruments, and ownership dated on or before your payments), and have Peach complete Step 7 (the funding instrument), before you expect settlements. Until it is active and the default, your new ACH payments go to Peach's own processor."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you rely on your processor, have Peach check your loan types, as in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#peach-managed-to-byob"},"children":["Peach-managed to BYOB"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"peach-managed-to-byob","__idx":21},"children":["Peach-managed to BYOB"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your company stays processed by Peach, so your instruments and autopay plans don't change."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You set up your own bank's processor and make it your only active default, as in Steps 2 and 3 of ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing#step-2-create-the-payment-processor"},"children":["Set up Bring Your Own Bank (BYOB) processing"]},", and complete Steps 4 to 6 (investors, settlement instruments, and ownership dated on or before your payments), and have Peach complete Step 7 (the funding instrument), before you expect settlements. New ACH payments go to it from the time they are created. Payments created earlier keep Peach's processor."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["While payments created before and after the move are still clearing, a day's settlement build can create two settlements for an investor: one for payments on Peach's processor and one for payments on yours. Each is funded separately, through its own processor."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A loan type can name its own ACH processor, which takes precedence over your default processor for that loan type's ACH payments. No API request can set or clear it. Ask Peach to check your loan types before you switch. A loan type that names a processor keeps routing its ACH payments there."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your processor handles ACH only. Card payments are unaffected by the switch."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your processor settles to your investors only if you created it settlement-required. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing"},"children":["Set up Bring Your Own Bank (BYOB) processing"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/how-settlement-works"},"children":["How settlement works"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Settlements on your processor fund only once Peach has created your funding instrument; see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing#step-7-have-peach-create-the-funding-instrument"},"children":["Step 7 of the BYOB guide"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"byob-to-peach-managed","__idx":22},"children":["BYOB to Peach-managed"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#peach-managed-to-byob"},"children":["Peach-managed to BYOB"]},", your instruments and autopay plans don't change. You perform these steps on your own processor. The code allows this safe order:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make your processor non-default with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/payment-processors/{paymentProcessorId}"]},". New ACH payments then go to Peach's own processor, unless a loan type names your processor. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDefault"]}," plays no part in filing, settlement or funding."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Keep the processor ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," until its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," have been filed, its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," have succeeded, its settlements waiting to be funded have funded, and your bank's return window for its payments and settlement payouts has passed. Peach files ACH only for an active processor, and funds settlements only through active settlement-required processors. While a processor is inactive, Peach doesn't read its confirmation or return files, unless another active processor uses the same SFTP host, username, inbox folder and file-name pattern. Until the files are read, returns on its payments and settlement payouts aren't recorded, and if the processor receives confirmation files, its payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," don't move to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["succeeded"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Then deactivate it with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE /api/payment-processors/{paymentProcessorId}"]},". Deleting a processor marks it ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deprecated"]},"; it doesn't remove it."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"PUT /api/payment-processors/{paymentProcessorId}\nContent-Type: application/json\nX-API-KEY: <YOUR-API-KEY>\n\n{\n  \"isDefault\": false\n}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ask Peach to check that none of your loan types names your processor. A loan type that does keeps routing its ACH payments to it."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"execute","__idx":23},"children":["Execute"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The move takes effect when Peach changes your company's processing setting, for a move to or from external processing. Between Peach-managed and BYOB, it takes effect when your default processor changes. Each payment keeps the processor and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," value it was created with. Turning off Peach-managed processing still affects payments already in progress: Peach no longer files Peach-processed ACH payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," or charges card payments, and collected payments not yet settled are not settled automatically. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#what-happens-to-payments-already-in-progress"},"children":["What happens to payments already in progress"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#what-happens-to-investor-settlement"},"children":["What happens to investor settlement"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"after-completion","__idx":24},"children":["After completion"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"validate","__idx":25},"children":["Validate"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a payment instrument without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]},". After a move to external processing, the response shows ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]},". After a move to Peach-managed or BYOB processing, it shows ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: false"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check your loans for payments still in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["After a move to BYOB processing, confirm that your bank received a file from Peach for your processor after the first ACH build that includes payments on it. A build with nothing to file sends no file. If you subscribe to the ACH file events, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ach.file.created"]}," fires for your processor at every build, including one that sends no file, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ach.file.upload.succeeded"]}," fires when a file is uploaded to your bank's SFTP server."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"system-behavior-after-the-move","__idx":26},"children":["System behavior after the move"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"After a move to"},"children":["After a move to"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What Peach does"},"children":["What Peach does"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["External processing"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Records and applies the payments you report, sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.due.today"]}," for your scheduled external payments, and sends borrower notices. It moves no money and does no investor settlement. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing"},"children":["Set up external payment processing"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Peach-managed or BYOB processing"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Files your new ACH payments through your default processor, or its own, and creates your autopay payments."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"known-limitations","__idx":27},"children":["Known limitations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: after Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},", Peach-processed payments in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}," move to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," on their date, and a payment in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," is applied to the loan but never collected. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#what-happens-to-payments-already-in-progress"},"children":["What happens to payments already in progress"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: collected payments not yet in an investor settlement when Peach stops processing your payments are not settled automatically. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#what-happens-to-investor-settlement"},"children":["What happens to investor settlement"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: no request can change a bank account's account number. An external account created with only the last digits can't become Peach-processed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: the API reference doesn't list ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," as a field of the instrument update request, although Peach applies it."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: you can't see or change a loan type's own ACH processor; no API request or portal screen shows or sets it. Ask Peach to check it."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: a processor's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isSettlementRequired"]}," are set when it's created and can't be changed later. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing"},"children":["Set up Bring Your Own Bank (BYOB) processing"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Known limitation: no request can move an existing payment, including a scheduled one, to a different processor."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"if-it-fails","__idx":28},"children":["If it fails"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only Peach can reverse a change to your company's processing settings."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An instrument converted to external keeps the account number it was created with. To reverse a conversion, send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: false"]}," in the same update request. This needs no extra permission."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After a move to external processing, you can update payments stuck in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiated"]}," yourself, as in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#take-over-payment-processing"},"children":["Take over payment processing"]},". Agree with Peach how to resolve them before you change them."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":29},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"new-instruments-come-back-with-isexternal-true-after-a-move-to-peach-managed-processing","__idx":30},"children":["New instruments come back with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExternal: true"]}," after a move to Peach-managed processing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Peach hasn't turned on Peach-managed processing yet, or has disabled payment processing. Ask Peach to check your company's settings."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"a-payment-update-returns-400-peach-payment-processing-is-enabled-external-updates-to-transactions-are-not-allowed","__idx":31},"children":["A payment update returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," \"Peach payment processing is enabled. External updates to transactions are not allowed.\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Peach still processes your payments, and the payment isn't external. Only Peach can update it until Peach sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processedByPeach"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"an-autopay-update-returns-400-field-agreementdocumentid-is-required","__idx":32},"children":["An autopay update returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," \"Field 'agreementDocumentId' is required.\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The new instrument is Peach-processed. Send the ID of the borrower's accepted autopay agreement."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ach-payments-still-go-to-peachs-processor-after-a-move-to-byob","__idx":33},"children":["ACH payments still go to Peach's processor after a move to BYOB"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your processor isn't ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," and the default, or a loan type names another processor. Make it your only active default, and ask Peach to check your loan types."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-quick-reference","__idx":34},"children":["API quick reference"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Task"},"children":["Task"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update a payment instrument"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-docs/api-public#tag/Payment-Instruments"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/people/{personId}/payment-instruments/{paymentInstrumentId}"]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update an autopay plan"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-docs/api-public#tag/Autopay"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/people/{personId}/loans/{loanId}/autopay"]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update a payment processor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-docs/api-public#tag/Payment-Processors"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/payment-processors/{paymentProcessorId}"]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Delete a payment processor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-docs/api-public#tag/Payment-Processors"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE /api/payment-processors/{paymentProcessorId}"]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update a payment"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-docs/api-public#tag/Transactions"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /api/people/{personId}/loans/{loanId}/transactions/{transactionId}"]}]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"see-also","__idx":35},"children":["See also"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/external-processing"},"children":["Set up external payment processing"]}," — The steps you take once your own processor handles payments."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/byob-processing"},"children":["Set up Bring Your Own Bank (BYOB) processing"]}," — Setting up your own bank's processor and investor settlement."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payments/how-settlement-works"},"children":["How settlement works"]}," — How collected payments become investor settlements."]}]}]},"headings":[{"value":"Switch between processing models","id":"switch-between-processing-models","depth":1},{"value":"Procedure overview","id":"procedure-overview","depth":2},{"value":"Before you begin","id":"before-you-begin","depth":2},{"value":"Prerequisites","id":"prerequisites","depth":3},{"value":"Assumed knowledge","id":"assumed-knowledge","depth":3},{"value":"Key concepts","id":"key-concepts","depth":2},{"value":"The procedure","id":"the-procedure","depth":2},{"value":"Peach-managed to external","id":"peach-managed-to-external","depth":2},{"value":"Have Peach turn off Peach-managed processing","id":"have-peach-turn-off-peach-managed-processing","depth":3},{"value":"Convert your existing payment instruments","id":"convert-your-existing-payment-instruments","depth":3},{"value":"Point autopay at external instruments","id":"point-autopay-at-external-instruments","depth":3},{"value":"What happens to payments already in progress","id":"what-happens-to-payments-already-in-progress","depth":3},{"value":"What happens to investor settlement","id":"what-happens-to-investor-settlement","depth":3},{"value":"Take over payment processing","id":"take-over-payment-processing","depth":3},{"value":"BYOB to external","id":"byob-to-external","depth":2},{"value":"External to Peach-managed","id":"external-to-peach-managed","depth":2},{"value":"Have Peach turn on Peach-managed processing","id":"have-peach-turn-on-peach-managed-processing","depth":3},{"value":"Replace your borrowers' external bank accounts","id":"replace-your-borrowers-external-bank-accounts","depth":3},{"value":"Point autopay at the new instruments","id":"point-autopay-at-the-new-instruments","depth":3},{"value":"What happens to existing payments and investor settlement","id":"what-happens-to-existing-payments-and-investor-settlement","depth":3},{"value":"External to BYOB","id":"external-to-byob","depth":2},{"value":"Peach-managed to BYOB","id":"peach-managed-to-byob","depth":2},{"value":"BYOB to Peach-managed","id":"byob-to-peach-managed","depth":2},{"value":"Execute","id":"execute","depth":2},{"value":"After completion","id":"after-completion","depth":2},{"value":"Validate","id":"validate","depth":3},{"value":"System behavior after the move","id":"system-behavior-after-the-move","depth":3},{"value":"Known limitations","id":"known-limitations","depth":3},{"value":"If it fails","id":"if-it-fails","depth":2},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"New instruments come back with isExternal: true after a move to Peach-managed processing","id":"new-instruments-come-back-with-isexternal-true-after-a-move-to-peach-managed-processing","depth":3},{"value":"A payment update returns 400 \"Peach payment processing is enabled. External updates to transactions are not allowed.\"","id":"a-payment-update-returns-400-peach-payment-processing-is-enabled-external-updates-to-transactions-are-not-allowed","depth":3},{"value":"An autopay update returns 400 \"Field 'agreementDocumentId' is required.\"","id":"an-autopay-update-returns-400-field-agreementdocumentid-is-required","depth":3},{"value":"ACH payments still go to Peach's processor after a move to BYOB","id":"ach-payments-still-go-to-peachs-processor-after-a-move-to-byob","depth":3},{"value":"API quick reference","id":"api-quick-reference","depth":2},{"value":"See also","id":"see-also","depth":2}],"frontmatter":{"title":"Switch between processing models","description":"What changes when Peach moves your company to another payment processing model, who performs each step, and what happens to payments already in progress.","verifiedDate":"2026-10-12T00:00:00.000Z","verifiedSources":[{"repo":"peach","spec":["openapi/api-public.yml","openapi/company.yml","openapi/schema.yml","openapi/settlement.yml","openapi/transactions-public.yml","peach/asyncio/processors/ach.py","peach/asyncio/processors/autopay.py","peach/asyncio/processors/reconciliation_worker.py","peach/asyncio/processors/settlement.py","peach/asyncio/processors/transactions/worker.py","peach/company/handlers.py","peach/loan_configuration/business_logic.py","peach/loan_configuration/handlers.py","peach/loan_configuration/models.py","peach/models/company.py","peach/payment_instruments/handlers.py","peach/payment_instruments/models.py","peach/payment_processors/handlers.py","peach/payment_processors/models.py","peach/payment_processors/serializers.py","peach/people/loans/autopay/handlers.py","peach/people/loans/common.py","peach/reconciliation/handlers.py","peach/reconciliation/models.py","peach/roles/permission_super_admin.py","peach/roles/permissions.py","peach/transactions/ach/handlers.py","peach/transactions/business_logic.py","peach/transactions/handlers.py","peach/transactions/models.py","peach/transactions/payment_application/handlers.py","peach/transactions/payment_due_today/handlers.py","peach/transactions/payment_initiation/handlers.py"],"ref":"c42dab04c868198c84657046583cb70c42caa92a","branch":"main"},{"repo":"peach-front","spec":["src/loan/components/PaymentManagement/PaymentMethodLegacy/index.js"],"ref":"41dfe6fd6a817c6b77b4010236afe3afa16894bf","branch":"develop"}],"seo":{"title":"Switch between processing models"}},"lastModified":"2026-11-03T23:31:11.226Z","pagePropGetterError":{"message":"","name":""}},"slug":"/payments/switch-processing-models","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}