API references
Merchant API

Filter contacts

Returns a paginated list of contacts for the authenticated merchant with filtering capabilities.

Filter by name, email, mobile (substring match) and creation date. Free-text terms also matches contact ID and external ID. Results are ordered by creation date descending.

Endpoint signature
This endpoint requires an API key. Read our authentication guide for more information.
POST https://api.reservepay.com/merchants/filter-contacts HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <token>
{
per_page: number?,
page: number?,
name: string?,
email: string?,
mobile: string?,
terms: string?,
created_at: string?,
}
Returns: object
New to Reservepay? Read our guide on how to call endpoints to get started. Note that this endpoint returns a paginated response, see the Pagination section of the same guide.
Request arguments
per_page number

Optional. Number of contacts to return per page. Default: 10, Maximum: 100

page number

Optional. Page number for pagination. Default: 1 (first page)

name string

Optional. Filter by contact name (substring, case-insensitive).

email string

Optional. Filter by contact email (substring, case-insensitive).

mobile string

Optional. Filter by contact mobile (substring).

terms string

Optional. Free-text search across contact name, email, mobile, contact ID, and external ID (substring, case-insensitive).

created_at string

Optional. Filter by creation date. Supports: specific date (YYYY-MM-DD), date range (YYYY-MM-DD..YYYY-MM-DD), or keywords (today, yesterday, this_week, last_week, this_month, last_month).

Response attributes
Attribute Description
previous
object

Nullable. Pagination for the previous page. Contains 'before' (page number) and 'per_page' (page size) parameters. Use these values in the 'page' and 'per_page' parameters of the next request to get the previous page. Returns null if there is no previous page.

page
array<object.contact>

Always present. The current page of records, ordered by creation date (newest first). Each record is serialized according to the specified record_serializer option.

next
object

Nullable. Pagination for the next page. Contains 'after' (page number) and 'per_page' (page size) parameters. Use these values in the 'page' and 'per_page' parameters of the next request to get the next page. Returns null if there is no next page.

Contact attributes
Attribute Description
contact_id
string

Always present. The internal unique identifier for the contact.

external_id
string

Nullable. The external ID provided when the contact was created.

email
string

Nullable. The email address of the contact.

mobile
string

Nullable. The mobile number of the contact.

name
string

Nullable. The name of the contact.

favorite
boolean

Always present. Whether the contact is marked as a favorite.

created_at
number

Always present. The Unix timestamp (seconds since epoch) when the contact was created.

primary_bank_account
object.bank_account

Nullable. The primary bank account for the contact.

default_card
object.card

Nullable. The default card for the contact.

bank_accounts
array<object.bank_account>

Always present. The most recent bank accounts associated with the contact (limited to 25 most recent, ordered by creation date descending).

cards
array<object.card>

Always present. The most recent cards associated with the contact (limited to 25 most recent, ordered by creation date descending).

Bank account attributes
Attribute Description
bank_account_id
string

Always present. The ID of the bank account.

bank_code
string

Always present. The bank code identifying the financial institution.

number
string

Always present. The bank account number.

name
string

Always present. The name of the account holder.

country_code
string

Always present. The ISO country code where the bank account is located.

created_at
number

Always present. The Unix timestamp (seconds since epoch) when the bank account was created.

deleted_at
number

Nullable. The Unix timestamp (seconds since epoch) when the bank account was deleted.

deletable
boolean

Always present. Whether the bank account can be deleted. A bank account is deletable if it is not the primary bank account, or if it is the primary bank account but it is the only bank account for the contact.

owner
string

Always present. Whether this bank account belongs to a contact or the merchant.

Possible values:
  • CONTACT
  • MERCHANT
primary
boolean

Always present. Whether this is the primary bank account for its owner (the contact or the merchant).

Card attributes
Attribute Description
card_id
string

Always present. The ID of the card.

token
string

Always present. The token of the card.

usage
string

Always present. Whether the card token is for single or multiple use.

Possible values:
  • SINGLE
  • MULTIPLE
used
boolean

Always present. Whether the card token has been used.

first_digits
string

Always present. The first 6 digits of the card number.

last_digits
string

Always present. The last 4 digits of the card number.

length
number

Always present. The length of the card number.

expiration_date
string

Always present. The expiration date of the card (MM/YY format).

cardholder_name
string

Always present. The name of the cardholder.

scheme
string

Always present. The card scheme (e.g., VISA, MASTERCARD).

created_at
number

Always present. The Unix timestamp (seconds since epoch) when the card was created.

deleted_at
number

Nullable. The Unix timestamp (seconds since epoch) when the card was deleted.

deletable
boolean

Always present. Whether the card can be deleted. A card is deletable if it is not the default card, or if it is the default card but it is the only card for the contact.

Errors common to all endpoints
UNHANDLED_ERROR

This error occurs when the server encounters an unexpected internal error that it cannot handle gracefully. This typically happens due to bugs, infrastructure issues, or edge cases that weren't anticipated during development.

INVALID_ARGUMENTS

This error occurs when the request contains invalid or missing parameters. Common cases include missing required fields, or values that don't match the expected format or type.

BAD_VERSION

This error occurs when making requests to an API version that does not exist. This commonly happens when using an outdated SDK or when the API version specified in the request URL is incorrect.

CODE SAMPLES
curl
curl "https://api.reservepay.com/merchants/filter-contacts" \
  -X POST
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $(RESERVEPAY_API_KEY)" \
  -d '{
        "email": "@acme.com"
      }'
Learn how to run these code samples in your terminal by reading our guide.