m2pfintech
Integration Guide

Testing

Test cards, test mobile numbers, and sandbox environment details for development and integration testing.

Use the Sandbox environment and test data to develop and validate your integration before moving to UAT and Production.


Environments

EnvironmentBase URLPurpose
Sandboxhttps://sandbox-api.m2p.comDevelopment and functional testing
UAThttps://uat-api.m2p.comPre-production end-to-end validation
Productionhttps://api.m2p.comLive transactions

Sandbox and UAT environments use simulated bank responses. No real money is moved and no real cards are issued.


Test Cards

Use these test card numbers in the Sandbox environment:

Card NumberTypeNetworkBehavior
4567000000001234VirtualVisaApprove all transactions
4567000000005678VirtualVisaDecline — insufficient funds
5200000000001111PhysicalMastercardApprove all transactions
6521000000009999VirtualRuPayApprove all transactions

Test Mobile Numbers

Mobile NumberBehavior
9876543210Standard registration — all flows work normally
9876543211OTP always returns 123456 for testing OTP flows
9876543299Triggers duplicate detection (dedup) for testing error handling

Testing Checklist

Use this checklist to validate your integration before requesting UAT access:

CategoryTest CaseExpected Result
AuthLogin with valid credentialsJWT token returned
AuthLogin with invalid credentials401 error with AUTH_001
AuthAPI call with expired token401 error with AUTH_002
RegistrationRegister new customerKit number + card details returned
RegistrationRegister duplicate customer409 error with REG_010
BalanceFetch balance for valid kitBalance object returned
CreditLoad wallet with valid amountTransaction ID + updated balance
CreditLoad wallet exceeding daily limit400 error with TXN_004
DebitDebit with insufficient balance400 error with TXN_003
CardLock cardCard status changes to LOCKED
CardUnlock cardCard status changes to ALLOCATED
CardBlock cardCard status changes to BLOCKED
IdempotencyDuplicate externalTransactionIdOriginal response returned (no duplicate transaction)
WebhookTrigger transactionWebhook received at your endpoint

On this page