Pay via paper checks
Learn how to enable US companies to pay their vendors with paper checks.
Available in: 🇺🇸 US
Supported currencies: USD
Overview
Monite enables US-based entities to pay their vendors with paper checks, utilizing ACH Direct Debit for fund transfer from the entity’s bank account.
All API calls mentioned in this guide require a partner access token.
Requirements
This guide assumes that:
- Both the entity and the counterparts (payee) are US-based.
- The entity has the
us_ach_paper_checks
payment method enabled. - The entity has verified the ownership of its bank account. This is required for Monite to be able to withdraw funds from the entity’s bank account.
Requirements for counterparts:
- The address specified by
default_billing_address_id
must have all fields filled in, including optional fields. Optional fields with no value should be stored as empty strings instead ofnull
. - If
default_billing_address_id
is not specified, the counterpart’s default address is instead used as the billing address. This default address must have all fields filled in.
How it works
The typical flow for paper check payouts is as follows:
- The entity provides its bank account details, and completes the verification of its bank account.
- The entity chooses to pay one or more payables (bills).
- The entity chooses paper checks as the payment method for some or all of the selected payables or for specific counterparts.
- Monite initiates an ACH Direct Debit to pull funds from the entity’s bank account. The amount pulled is the total amount of all payables that the entity chose to pay.
- Monite prints a check and mails it to the counterpart’s address. The checks are sent as if they were from the entity.
Paper check delivery time
Paper checks take 7-10 business days to arrive to the counterpart (payee). Monite partners should display the information about delivery times in their applications when users select “paper check” as the payment method.
1. Subscribe to the webhooks
To get notified about the status updates of payments made by entities, you need to subscribe to these webhooks:
batch_payment.status_updated
- notifies about status transitions of a batch payment as a whole;payment_intent.status_updated
- notifies about status transitions of individual payment intents within the batch payment.
2. Create a batch payment with the paper check delivery method
To issue paper checks on behalf of an entity, call POST /batch_payments
and provide information about the payables that the entity wants to pay and the entity’s bank account to withdraw funds from. A single request can include one or more payables. A separate paper check will be issued for each payable listed in the request.
The specified payables must be in the waiting_to_be_paid
status.
The key fields in the request are:
payment_method
- must be"us_ach"
.payment_intents[].recipient.payout_method
- must bepaper_check
.
Other fields:
payer_bank_account_id
- the ID of the entity’s US bank account to withdraw the funds from. This bank account must be verified.payment_intents
- an array containing information about the payables that the entity wants to pay. The currency of each of these payables must be USD.object.type
- must be"payable"
.object.id
- the ID of a payable to pay.recipient.type
- must be"counterpart"
.recipient.id
- the ID of the counterpart that issued the payable specified byobject.id
and to whom the entity wants to send a paper check. This counterpart must be US-based.
Combining paper checks and ACH Direct Debit payments
An entity can use a combination of ACH Direct Debit and paper check payouts within a single /batch_payment
request. For example, use ACH Direct Debit to pay some of the payables listed, and paper checks to pay other payables.
3. Track the payment status
Batch payment statuses
A batch payment goes through several statuses, some of which also reflect the statuses of the individual payment intents within this batch payment.
Check the batch payment status
Assuming you have subscribed to the payment webhooks, you will receive the batch_payment.status_updated
and payment_intent.status_updated
webhooks whenever the payment status is updated.
In the case of the batch_payment.status_updated
webhook, the event payload contains the batch payment ID (object_id
) and the ID of the entity that made this payment (entity_id
):
Use these IDs to query the new status of the batch payment by calling GET /batch_payment/{id}
:
The returned batch payment object contains the statuses of the batch payment itself and its individual payment intents, among other details. If the batch payment status is partially_successful
or failed
, the error
fields contain any errors that occurred while processing the batch payment as a whole and individual payment intent.