m2pfintech
API LibraryTransaction

Load Corporate Pool Wallet

Creates a new load transaction for crediting or debiting corporate hierarchy pool wallets. This is used to manage the master pool from which individual cardholder loads are funded.

Corporate Pool vs Card Holder Load

  • Corporate Pool Load: Funds the corporate/branch wallet (the "pool")
  • Card Holder Load: Loads an individual cardholder's card from the pool

Flow

  1. Bank credits the corporate pool wallet (this API)
  2. Corporate/branch loads individual cards from the pool (Card Holder Load API)

Maker-Checker

Pool loads typically require approval. The response currentStatus will be CREATED until approved by a checker.

POST
/v1/load/

Authorization

bearerAuth tenantId
AuthorizationBearer <token>

JWT Bearer token from the Authentication API

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

Request Body

application/json

code*string

Required. Unique load transaction code

Length1 <= length
hierarchy*

Required. Hierarchy details for the load transaction

amount*number

Required. Amount to be loaded

referenceNumber*string

Required. Unique reference number for the load transaction

Length1 <= length
wallet*

Required. Target hierarchy wallet

transactionType*string

Required. Type of load transaction — CREDIT or DEBIT

Value in"CREDIT" | "DEBIT"
customAttributes?

Custom attributes for additional metadata

id?string

Response Body

application/json

application/json

application/json

curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/load/" \  -H "X-TENANT-ID: ACME_CORP" \  -H "Content-Type: application/json" \  -d '{    "code": "LOAD-2026-001",    "hierarchy": {      "corporateId": "CORP123",      "name": "Tech Corp Ltd",      "type": "Corporate"    },    "amount": 1000000,    "referenceNumber": "REF20260101001",    "wallet": {      "walletId": "wallet_12345",      "productType": "GPR",      "kycSelection": "FULL_KYC"    },    "transactionType": "CREDIT"  }'
{
  "result": {
    "id": "LD20260101001",
    "currentStatus": "CREATED",
    "code": "LOAD-2026-001",
    "amount": 1000000,
    "transactionType": "CREDIT"
  },
  "pagination": null
}
{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Bad Request",
  "status": 400,
  "detail": "Unable to convert http message",
  "message": "error.http.400"
}
{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Load already exist for given Id",
  "status": 409,
  "detail": "Load with code LOAD-2026-001 already exists",
  "message": "error.business",
  "businessCode": "PP_CORP_004"
}

Credit/Debit Prepaid Card POST

Loads (credits) or debits a GPR (General Purpose Reloadable) card holder's wallet. This is the primary API for managing card balances for GPR, Gift, and NCMC products. ### Supported Operations - **CREDIT**: Add funds to the cardholder's wallet - **DEBIT**: Remove funds from the cardholder's wallet (partial or full) ### Debit Types For debit operations, specify `debitTransactionType`: - `PARTIAL_DEBIT` — Withdraw a specific amount - `FULL_DEBIT` — Withdraw entire balance - `FULL_DEBIT_WITH_CLOSURE` — Withdraw entire balance and close the account ### Maker-Checker This API creates a load request that may go through maker-checker approval. The `currentStatus` in the response indicates the processing state: - `CREATED` → Pending approval - `APPROVED` → Processed successfully ### Key Fields - `hierarchyId`: The branch/corporate ID initiating the load - `kitNo`: The card kit number to be loaded - `wallet.accountId`: The specific wallet to credit - `product.productType`: GPR, Gift, or GPR+NCMC

Credit or Debit Wallet POST

Performs a direct credit or debit on a cardholder's wallet. This is the fundamental money-movement API used for programmatic fund transfers. ### Use Cases - **CREDIT**: Load funds, cashback, refund, promotional credit - **DEBIT**: Fee deduction, penalty charge, adjustment ### Idempotency The `txnRef` field serves as an idempotency key. Sending the same `txnRef` twice will result in a **duplicate transaction error** (409), preventing accidental double-processing. ### Response Returns pre-balance, post-balance, and the transaction status. Use the `externalTransactionId` from the response for subsequent lookups. ### Important Notes - `amount` is always a positive number — the `transactionType` determines credit vs debit - `txnRef` must be unique per transaction (alphanumeric, hyphens allowed) - `entityId` identifies the specific cardholder account - For load transactions, set `txnOrigin` to `LOAD`