Check
How to record check payments with PCE and how they differ from ACH.
Check payments let merchants record paper checks as a tender type in the Checkout API. Like cash, these transactions are primarily for reporting and reconciliation — the merchant still needs to take each physical check to the bank for deposit.
Although checks and ACH both draw from a customer’s bank account, checks are more manual, slower to clear, and carry their own fraud and rejection risks.
Prerequisites and limitations
- Prerequisites: Access to the PCE
/paymentAPI and a merchant account configured for Checkout. - Limitations: Check transactions are reporting-only in PCE. The merchant must still physically deposit the checks at the bank. Funds can be reversed later if the check is fraudulent, returned, or stopped.
Checks vs. ACH
Both check and ACH payments use bank account information, but the flows are very different:
-
Checks (this page):
- Customer hands the merchant a physical check.
- The merchant records the payment in PCE and then takes the check to the bank to deposit it.
- Clearing time and risk are tied to traditional paper check processing.
-
ACH:
- Merchant (or customer through a virtual terminal) enters bank details electronically.
- The ACH processor handles debits and deposits — no trips to the bank.
- Still subject to returns and fraud, but the movement of funds is automated.
When to Use Check Payments
Use check tender when:
- You want to offer checks as an additional payment method alongside cards, ACH, and cash.
- You need check payments to appear in the same reports and reconciliation flows as other tender types.
- Your business regularly receives checks and wants a consistent way to log them in PCE.
Things to Keep in Mind
-
Reporting-only tender: PCE does not deposit check funds for you. The merchant must manually deposit checks to their bank account.
-
Risk and reversals: Checks and ACH share common drawbacks:
- It can take several days to learn a check is fraudulent or has insufficient funds.
- Customers can request a stop payment on a check even after receiving goods or services.
- Merchants risk delivering products or services and then having the check reversed later.
-
Operational impact: Merchants should factor check risk and delay into their fulfillment process, especially for high-value or service-based transactions.
Make a Check Payment Request
Check payments are created by posting to the /payment endpoint with tenderType set to "Check" and bank account details in the bankAccount object.
Endpoint
| Method | Path | Description |
|---|---|---|
| POST | /payment | Record a new check-based payment |
Steps
-
Set up the HTTP request
- Use the
POSTmethod. - Call the
/paymentendpoint in the correct environment (sandbox or production).
- Use the
-
Add authentication and headers
-
Send your username and password in the
Authorizationheader using Basic auth.- Encode
username:passwordas Base-64 and prefix withBasic.
- Encode
-
Set the
Content-Typeheader toapplication/json.
-
-
Provide bank account and contact details
In the
bankAccountobject, the required fields can vary based on your merchant fraud settings. Generally:contact.nameis always required.contact.phoneandcheckNumberare optional, but recommended for better traceability.
Example payload:
{ "merchantId": "4xxx0", "tenderType": "Check", "bankAccount": { "checkNumber": "123", "contact": { "name": "John Doe", "phone": "3432423423" } }, "amount": 0.01 }Key fields:
merchantId: Your merchant identifier.tenderType:"Check"for check payments.bankAccount.checkNumber: Optional check number.bankAccount.contact.name: Name of the person or business on the check (required).bankAccount.contact.phone: Optional phone number for follow-up.amount: Check amount to record.
-
Verify the response
- A successful request returns HTTP 201 Created.
- The payment object’s
statusfield should beApprovedwhen the check payment record is created.
Updated about 1 month ago