Send Paper Check Payment
API Refs
- Production: Send Paper Check
- Staging: Send Paper Check
Request body
| Name | Type | Description | Required |
|---|---|---|---|
| recipientEmail | string | Insured email. If insured does not exist, create an invite | yes |
| amount | number | The amount of money being transferred. Amounts should have either 0 or 2 decimal places. Max limit is based on most current agreements with ClaimsSnap. Minimum limit is $0.01. | yes |
| memo | string | A string with a maximum length of 280 characters. | yes |
| alias | string | An alias for the client's address information. | yes |
| mailType | string | Check shipping type. Available in four options only: FedEx, Mail, USPSFirst, USPSTrack. | yes |
| attachments | array | Optional PDFs printed and mailed in the same envelope as the check. Up to 5 files, 5 MB each. Each item has a fileName ending in .pdf and a base64-encoded content. | no |
Response body
| Name | Type | Description | Required |
|---|---|---|---|
| id | number | Id of payment. Can be used for any payment operations. | yes |
| transactionId | string | Payment transaction Id. It can be seen in the application in the transaction history. | yes |
| amount | number | Payment amount without any fees. | yes |
| customerId | number | The Id of the insured who will receive the payment or has already received it. | yes |
| customerName | string | Name of the insured who will receive the payment or has already received it. | yes |
| merchantName | string | Name of the insurer who will send the payment or has already sent it. | yes |
| fee | number | Fee for the payment amount. It will only be different from zero when this payment is sent. | yes |
| feeDeductFrom | string | Which side of the transfer will pay the fee. | yes |
| status | string | Status of payment. Main statuses: Awaiting-cash-out, Canceled, Preparing to mail, In-transit, Settled | yes |
| type | string | Type of payment. Can be only of two types: ACH or paper check with delivery type. | yes |
| memo | string | A string with a maximum length of 280 characters. | yes |
| claimNumber | string | An optional claim reference (up to 255 characters), shown in the dashboard and exports. | no |
| createdAt | Date | Creation date | yes |
| attachments | array | PDFs stored with the payment. Each item has id, fileName, size (bytes) and downloadUrl. | no |
Example
- Get list of insured's addresses Request with userId = 1;
- Get list of insured's addresses Response:
[ { "address1": "11 Birch Hill Street", "address2": "Apt. 123", "city": "Bronx", "postalCode": "10023", "state": "NY", "phone": "123-456-7890", "alias": "Home" } ] - Send Paper Check Transfer Request:
{ "recipientEmail": "[email protected]", "amount": 12.34, "memo": "Test memo", "alias": "Home", "mailType": "Mail", "attachments": [ { "fileName": "claim-letter.pdf", "content": "JVBERi0xLjQKJ..." } ] } - Send Paper Check Transfer Response:
{ "id": 1, "transactionId": "a444aa44-aaa4-4a4a-aaaa-a44a44444a44", "amount": 12.34, "createdAt": "2023-08-09T15:00:00.000Z", "customerId": 1, "customerName": "John Smith", "merchantName": "Jake Merchant", "fee": "9.00", "feeDeductFrom": "sender", "status": "Preparing to mail", "type": "Paper Check: USPS First-Class (3-5 days)", "memo": "Test memo", "attachments": [ { "id": 45, "fileName": "claim-letter.pdf", "size": 48213, "downloadUrl": "/api/public/payments/1/attachments/45" } ] }
Description
You can send Paper check transfers only for your insureds. If you want to send Paper check transfer for non insured, go to Send pending payment
Where to get insured's email?You can get list of all created insureds. Go to Get list of all insureds
Where to get address aliasYou can get all existing addresses with their alias for any you insured. Go to Get list of insured's addresses for more information about it.
When accepting a pending payment as a paper check, you must always indicate the alias of the address of the insured to whom the paper check will be sent.
If the transaction is successfully created, the pending payment status will change to Preparing to mail.
Such a payment has the following statuses:
- Preparing to mail;
- Mailing soon;
- Rejected;
- Resubmitted: Preparing to mail again;
- Canceled;
- Mailed.
Attachments
You can include up to 5 PDFs with a paper check. They're printed and mailed in the same envelope as the check, after the check page. Each file must be a readable PDF of 5 MB or less, and the file name must end in .pdf.
If any attachment can't be prepared for mailing, the whole request fails with a 400 and no check is sent. Nothing is charged, so you can fix the file and send the request again.
The response and Get payment by Id list the stored files under attachments. To download one, call its downloadUrl with the same Authorization header you use for other requests.
Response codes
| Status Code | Error Code | Description |
|---|---|---|
| 201 | - | Payment created and paper check queued successfully |
| 400 | VALIDATION_ERROR | Request validation failed (missing or invalid fields) |
| 400 | PAYMENT_4001 | Selected delivery address does not exist |
| 400 | VALIDATION_ERROR | More than 5 attachments, or a non-PDF name or content |
| 400 | ERROR | Attachment over 5 MB, unreadable, or can't be mailed |
| 401 | UNAUTHORIZED | Missing or invalid authentication token |
| 403 | PAYMENT_4030 | Payments are not allowed for this account |
| 403 | PAYMENT_4033 | Check payments are not configured for this account |
| 403 | PAYMENT_4220 | Selected mail type is not enabled for this account |
| 404 | PAYMENT_4041 | Recipient profile not found |
| 409 | PAYMENT_4090 | Payment is not in the required status for this operation |
| 500 | PAYMENT_5000 | Failed to create payment |
| 502 | PAYMENT_5021 | Check provider (Checkflo) error |
Error response body
All error responses return the following structure:
{
"statusCode": 403,
"code": "PAYMENT_4033",
"message": "Check payments are not configured for this account",
"timestamp": "2026-03-06T00:00:00.000Z",
"path": "/api/public/payments/send-check"
}
Validation error (400)
{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"timestamp": "2026-03-06T00:00:00.000Z",
"path": "/api/public/payments/send-check",
"errors": [
{
"field": "mailType",
"message": "mailType must be one of: FedEx, Mail, USPSFirst, USPSTrack"
}
]
}
Attachment error (400)
When a file passes validation but can't be mailed, message names the file and what to fix:
{
"statusCode": 400,
"code": "ERROR",
"message": "claim-letter.pdf is larger than 5 MB",
"timestamp": "2026-03-06T00:00:00.000Z",
"path": "/api/public/payments/send-check"
}
Provider error (502)
When Checkflo returns an error processing the check:
{
"statusCode": 502,
"code": "PAYMENT_5021",
"message": "Failed to send check",
"timestamp": "2026-03-06T00:00:00.000Z",
"path": "/api/public/payments/send-check",
"provider": {
"provider": "checkflo",
"providerCode": "5",
"providerMessage": "Failed to send check"
}
}Updated 7 days ago