m2pfintech
API LibraryTransaction

Email Statement to Cardholder

Generates a PDF transaction statement for the specified date range and sends it to the cardholder's registered email address. The email is sent asynchronously — the API returns a success response immediately, and the email is delivered within a few minutes.

How It Works

  1. Provide the cardholder's entity ID (and optionally mobile/kit number for additional validation)
  2. Specify the date range for the statement (fromDate to toDate)
  3. The system generates a formatted PDF with all transactions in the period
  4. The PDF is emailed to the cardholder's registered email address

Key Business Rules

  • The cardholder must have a registered email address on file
  • Maximum date range: 1 year (365 days)
  • The statement includes all transaction types: loads, purchases, refunds, fees, etc.
  • If no transactions exist in the date range, a statement with zero transactions is sent
  • Email delivery is asynchronous — use webhooks or polling to confirm delivery if needed
POST
/v1/transactions/statement/email

Authorization

bearerAuth tenantId
AuthorizationBearer <token>

JWT Bearer token obtained from the Authentication API. Include in the Authorization header as: Bearer <your-token>

In: header

X-TENANT-ID<token>

Your unique tenant identifier assigned during onboarding

In: header

Header Parameters

X-TENANT-ID*string

Your unique tenant identifier assigned during partner onboarding.

Request Body

application/json

Statement generation request with cardholder identity and date range

mobile?

Cardholder's registered mobile number. Optional but recommended for additional identity validation. If provided, it must match the mobile on file for the entity ID.

kit?string

Kit number (card identifier) of the cardholder. The kit number is printed on the physical card and assigned during issuance. Optional — used for additional validation.

entityId*string

Required. Unique entity identifier for the cardholder. This is the primary identifier used to look up the customer's account and transaction history. Received in the issuance response or customer fetch API.

Length1 <= length
fromDate?string

Start date (inclusive) for the statement period. Format: dd-mm-yyyy (e.g., 01-04-2025 for April 1, 2025). Must be earlier than or equal to toDate.

Match^\d{2}-\d{2}-\d{4}$
toDate?string

End date (inclusive) for the statement period. Format: dd-mm-yyyy (e.g., 30-04-2025 for April 30, 2025). Must be later than or equal to fromDate. Maximum gap from fromDate: 365 days.

Match^\d{2}-\d{2}-\d{4}$
accountId?string

Optional wallet/account ID to filter the statement to a specific wallet. If not provided, the statement includes transactions across all wallets. Useful for multi-currency cards where you want a statement for a specific currency wallet.

isOffline?boolean

Set to true to include offline (pending settlement) transactions in the statement. Offline transactions are those authorized but not yet settled. Default: false.

Defaultfalse
success?boolean

Set to true to include only successful transactions. Set to false to include all transactions including failed/declined ones. Default: includes all transactions.

dataMart?boolean

Response Body

application/json

application/json

application/json

curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/transactions/statement/email" \  -H "X-TENANT-ID: ACME_CORP" \  -H "Content-Type: application/json" \  -d '{    "entityId": "798782647420001622070825",    "fromDate": "01-04-2025",    "toDate": "30-04-2025"  }'
{
  "result": "Email will be sent to the customer on registered emailId",
  "pagination": null
}

{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Bad Request",
  "status": 400,
  "detail": "entityId: must not be empty",
  "message": "error.http.400"
}

The entity ID does not correspond to any active cardholder

{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Customer does not exist for id: 79878264742000162207082",
  "status": 409,
  "detail": "Customer does not exist for id: 79878264742000162207082",
  "message": "error.business",
  "businessCode": "PPCUST_002"
}