Lending
Loan funding - payment rails
Pull funding from merchant
5 min
the pullfunding api provides a method for mpls to retrieve funds from merchant accounts back into the bank, using {{nacha}} debits this is especially useful when a merchant initiates a return or refund, as it reduces the need for manual reconciliation or additional requests, by reusing previously funded loan it is best practice to wait three days before sending out funds after a successful pull according to nacha standards, a pull can be returned to the merchant most returns tend to occur within the first three days to reduce the likelihood of overfunding, it is advisable to wait before sending out the next fundinginfo request flow of funds when this api can be called before calling the pullfunding api, ensure the loan is eligible for using this api according to loan status and amount being requested loan status should be one of the following notfullyfunded funded readytosell sold amount being requested in the api should be greater than 0 and less than the sum of rails that have been successfully sent and haven't been returned 0 < amount <= loan amountfunded flow of pullfunding when this api succeeds, you receive an id in the response track this rail id using the railupdated webhook events the full list of fundresults of the rail is in the railresulttype enums using the pullfunding api, is essentially asking for a return of funds to the loan unlike the success of a standard push rail, a successful pull will be in a returned status and not in a success status these statuses have different meanings than other rail statuses action fundresult ( railresulttype enums ) description put /pullfunding succeeds requested pull funds has been requested the pull succeeds returned the pull funds request has been successfully received by nacha, and the bank has received the funds the pull amount has been returned to the loan pull is returned pullreturned the ach pull, has been returned the amount available in the loan for funding, will be deducted by the rail amount put /{loanid}/ pullfunding { "name" "pull funding", "method" "put", "url" "https //arixapisandbox crbnj net/loan/{loanid}/pullfunding", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "t dbva86d68la7zvjefrn", "language" "curl", "code" "curl location request put 'https //arixapisandbox crbnj net/loan/215eb077 3a00 4ed3 995b b226010ccc78/pullfunding' \\\\\n header 'authorization bearer \<token>' \\\\\n header 'content type application/json' \\\\\n data '{\n \\"fundingpull\\" {\n \\"rail\\" \n {\n \\"achfields\\" {\n \\"standardentryclasscode\\" \\"ppd\\",\n \\"transactiontype\\" \\"pull\\",\n \\"toroutingnumber\\" \\"021214891\\",\n \\"toaccounttype\\" \\"gl\\",\n \\"toaccountname\\" \\"ari\\",\n \\"toaccountnumber\\" \\"9999999999\\",\n \\"description\\" \\"pulling from ari\\"\n },\n \\"railtype\\" \\"cosach\\",\n \\"priority\\" 1,\n \\"amount\\" 100\n }\n }\n}'", "customlabel" "" } ], "selectedlanguageid" "t dbva86d68la7zvjefrn" }, "results" { "languages" \[ { "id" "qqhilt fhhpgn7vzgszaq", "language" "200", "customlabel" "", "code" "{\n \\"loanid\\" \\"e92081b4 8735 4294 a061 b22400cdeb8b\\",\n \\"rail\\" {\n \\"achfields\\" {\n \\"standardentryclasscode\\" \\"ppd\\",\n \\"transactiontype\\" \\"pull\\",\n \\"toroutingnumber\\" \\"021214891\\",\n \\"toaccounttype\\" \\"gl\\",\n \\"toaccountname\\" \\"account name to pull from\\",\n \\"toaccountnumber\\" \\"9999999999\\"\n },\n \\"id\\" \\"68e96cb3 a449 460b ad7e b22400ce10fe\\",\n \\"railtype\\" \\"cosach\\",\n \\"priority\\" 1,\n \\"amount\\" 500,\n \\"loanid\\" \\"e92081b4 8735 4294 a061 b22400cdeb8b\\",\n \\"mplid\\" \\"tst\\",\n \\"isfailed\\" false,\n \\"loantype\\" \\"undefined\\"\n }\n}" }, { "id" "tyfobrzvvk1n0suyh7d l", "language" "400", "code" " {\n \\"responsestatus\\" {\n \\"errorcode\\" \\"badrequest\\",\n \\"message\\" \\"pullfunding amount should be less than or equal to current amountfunded 500\\",\n \\"errors\\" \[]\n }\n}\n", "customlabel" "" } ], "selectedlanguageid" "tyfobrzvvk1n0suyh7d l" }, "request" { "pathparameters" \[ { "name" "loanid", "kind" "required", "type" "string", "description" "the unique id of the loan returned from the post /loan api call", "children" \[] } ], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "fundingpull", "kind" "required", "type" "object", "description" "", "children" \[ { "name" "rail", "kind" "required", "type" "object", "description" "", "children" \[ { "name" "achfields", "kind" "required", "type" "object", "description" "", "children" \[ { "name" "standardentryclasscode", "kind" "required", "type" "string", "description" "the type of account \n\nppd consumer accounts\n\n ccd corporate accounts\n\n" }, { "name" "toroutingnumber", "kind" "required", "type" "string", "description" "routing number of the bank we are attempting to pull funds from \nthe value entered for this field is validated up front and it must be 9 digits long " }, { "name" "toaccountname", "kind" "required", "type" "string", "description" "name on the merchant account that we are pulling from \nlimited to 22 characters " }, { "name" "toaccountnumber", "kind" "required", "type" "string", "description" "account number \n\nlimited to 17 digits \n" }, { "name" "description", "kind" "required", "type" "string", "description" "mapped to identification field in the nacha file \nlimited to 15 characters " }, { "name" "transactiontype", "kind" "required", "type" "string", "description" "pull\n\nthis should be a constant value for pullfunding" }, { "name" "toaccounttype", "kind" "required", "type" "string", "description" "checking account or savings account " } ] }, { "name" "railtype", "kind" "required", "type" "string", "description" "cosach for standard ach\ncosachsd for same day funding ach" }, { "name" "amount", "kind" "required", "type" "number", "description" "the amount of money to pull " }, { "name" "priority", "kind" "optional", "type" "integer", "description" "if more than one pull is needed, then the order in which they are sent can have a priority \nthis is the order the rails should be processed starts with number 1 " } ] } ] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" }, "response" \[ { "name" "id", "kind" "optional", "type" "string", "description" "the id of the rail being pulled use this to track updates of the railupdated hook event \n " } ] }