Direct Check Submit / Injection

Vcheck Support > Special Coding > Direct Check Submit / Injection

There is a way to directly submit checks into the Vcheck system without using the standard Vcheck forms. HOWEVER, this function is usually limited to Pro level accounts and it is restricted by IP address.

This process is for companies that have other systems in place that collect the necessary data needed to inject a check into the system and want to bypass or create their own check forms because of additional agreements or functions presented to their customers.

Using Direct Submit will require someone with a fair amount of programming skill in either HTML/Forms and/or PHP and Curl.

As an example we have a couple of merchants that process a large number of checks through their own accounting/reconciliation systems. Since they already had a system in place to collect the necessary checking account data, they could bypass having the customer use the Vcheck forms and do a direct injection of checks into our system while their system did what it needed to with the data.

In essence, our Direct Submit system allows a specified IP address to make a POST to Vcheck with all the required check data (and additional fields if desired including server postbacks). Vcheck will then verify the data and create a Vcheck from it.  After that, Vcheck works as it would for any other check submission.

There are basically two ways to accomplish this - using an actual form containing the required check fields and related data or using PHP or similar and Curl to generate a POST to our system.  NOTE: it has to be a POST and not a GET call.

While using a FORM may seem easier, it is vital that all the form fields are properly validated for data and syntax - otherwise the system will reject the data.  The same holds true for creating a POST using PHP/Curl.

The following fields are required:
id (the merchantid)
payee (only required if merchant has more than one)
check_number (at least 3 digits)

The following fields are optional:


If a valid email address is present under the field Email AND you want email receipts sent to your customers, you must use your own SMTP mail server to prevent our server from being blacklisted due to customers reporting unexpected receipts as SPAM.


Either method can be combined with a request for specified form fields and values (ReturnFields) to be posted back to a specified server (ReturnURL). More about this can be found on this page.

Below is a sample of how a FORM would look in order to work via the Direct Submit method:

<form method='POST' action=''>
    <input type='hidden' name='id' value='Your Merchant ID'>
    <input type='hidden' name='email' value='must be valid email syntax'>
    <input type='hidden' name='email_confirm' value='must EXACTLY match the field above'>
    <input type='hidden' name='payee' value='Only needed if you have more than 1 payee listed - and it must be spelled exactly as it appears in your list of payees'>
    <input type='hidden' name='payer_name' value=''>
    <input type='hidden' name='payer_address' value=''>
    <input type='hidden' name='payer_city' value=''>
    <input type='hidden' name='payer_state' value='The two letter abbreviation for the state'>
    <input type='hidden' name='payer_zip' value='5 digits only'>
    <input type='hidden' name='payer_phone_area' value=''>
    <input type='hidden' name='payer_phone_prefix' value=''>
    <input type='hidden' name='payer_phone_suffix' value=''>
OR <input type='hidden' name='payer_phone' value='must be formatted as (111) 333-5555'>
    <input type='hidden' name='amount' value='digits and period only - 555.66'>
    <input type='hidden' name='check_number' value='at least 3 digits'>
    <input type='hidden' name='routing_number' value='9 digit ABA routing number'>
    <input type='hidden' name='account_number' value='digits and dash only'>
    <input type='hidden' name='account_confirm' value='must match above field'>
    <input type='hidden' name='returnfields' value='payer_name,email'>
Optional fields such as those from the insurance preform can also be sent and will be stored with the check details:
    <input type='hidden' name='policy_invoice' value='AMO 7495'>
    <input type='hidden' name='policy_number' value='0000004097'>

When a submission is made to the directsubmit.php, our system will return something in plain text.

Access Denied - means the IP address of the submitter is not authorized to use this feature.  We have to manually add your server's IP address for Direct Submit.

If all the data submitted is valid and the submission is a success you will receive the following:

Status: Success
TransactionID: XXXXX  (with XXXXX being the check confirmation number)

If there is an error in the data you submit, you will recieve an error message such as:

Status: Error
Message: You must enter a value for Your State. You must enter a value for Your Zip. The Your Zip must be a 5 digit zip code.

If you include a field for ReturnFields - all the fields designation in the value of ReturnFields will also be included in the text displayed:

Success with returnfields:
Status: Success
payer_name: Bobby Blah
email: joe(at)
check_number: 2216
amount: 6798.78
date: Mon Jun 18th 10:50:42 2018 (MDT)
confirmation_number: 18169000002
email: joe(at)
email_confirm: joe(at)
payer_name: Bobby Blah
payer_address:  123 Main Street  payer_city: Denver
payer_state: CO
payer_zip: 80122
payer_phone: (303) 555-1234
payer_phone_area: 303
payer_phone_prefix: 555
payer_phone_suffix: 1234
routing_number: 302075018
account_number: 9876543
account_confirm: 9876543
check_number: 2216
check_amount: 6798.78

If you also use the ReturnURL field - all the form fields designed in the ReturnFields will be posted to the URL designated.  Again, see this page for more details.

All Video Tutorials