| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Submit a domestic money transfer using the beneficiary account details, transfer OTP and current reference.
Endpoint
POST https://pay2new.in/apis/dmt/v2/fundTransfer
Authentication
Send both headers on every request:
| Header | Required | Description |
|---|---|---|
secret | Yes | Your Pay2New-issued API secret. |
outletId | Yes | Active Pay2New customer/outlet ID from customer onboarding. |
Account and outlet access
Use an IP address registered on your partner account. The partner account, KYC, wallet, API access and DMT service must be active. The outlet must be enabled for this service.
Send an actual JSON object with Content-Type: application/json.
Request
Complete the remitter and beneficiary steps first, then obtain the transaction OTP for this transfer. Use a DMT product_code from the Product List configured for your account. IMPS, RTGS and NEFT are accepted request values; actual availability depends on the selected product and bank.
| Field | Type | Required | Description |
|---|---|---|---|
remitterMobile | string | Yes | Remitter mobile number. |
accountNumber | string | Yes | Beneficiary account number. Keep as text to preserve leading zeroes. |
ifsc | string | Yes | Beneficiary bank IFSC. |
latitude | decimal string | Yes | Decimal latitude of the transaction or capture location. |
longitude | decimal string | Yes | Decimal longitude of the transaction or capture location. |
transferMode | string | Yes | IMPS, RTGS or NEFT; subject to product and bank availability. |
request_id | string | Yes | Your transaction reference, at least 8 characters. Retain it for reconciliation. |
product_code | string | Yes | Numeric DMT product code from Product List for your account. |
ip | string | Yes | Valid end-user/device IPv4 address. This does not replace the registered source-IP requirement. |
amount | decimal string | Yes | Transfer amount in INR, for example 100.00. |
otp | string | Yes | OTP for this operation; exactly 6 digits. |
referenceKey | string | Yes | Current reference returned by the preceding step for this remitter and operation; pass it unchanged. |
Example request
The values below are synthetic. Replace the credential, outlet ID, response references and customer details before sending a request. Replace the bank/product placeholder with the numeric code returned for your account.
curl --request POST \
--url 'https://pay2new.in/apis/dmt/v2/fundTransfer' \
--header 'secret: YOUR_PAY2NEW_SECRET' \
--header 'outletId: YOUR_PAY2NEW_OUTLET_ID' \
--header 'Content-Type: application/json' \
--data '{
"remitterMobile": "9000000001",
"accountNumber": "000123456789",
"ifsc": "TEST0000001",
"latitude": "18.5204",
"longitude": "73.8567",
"transferMode": "IMPS",
"request_id": "DMT202609260001",
"product_code": "DMT_PRODUCT_CODE_FROM_PRODUCT_LIST",
"ip": "203.0.113.10",
"amount": "100.00",
"otp": "123456",
"referenceKey": "REFERENCE_FROM_PREVIOUS_RESPONSE"
}'
Response
Read the JSON status and message even when the HTTP request completes successfully.
| Field | Type | Description |
|---|---|---|
status | integer | Outcome of this operation; see the status notes below. |
message | string | Outcome or rejection description. |
order_id | string | Pay2New transaction reference, when a transaction is created. |
data.txn_value | string | Formatted transaction amount. |
data.balance | string | Formatted wallet balance. |
data.request_id | string | Your submitted transaction reference. |
data.bank_reference | string or null | Bank reference when available; this field may be omitted when no provider result is available. |
Amount and balance are returned as decimal strings and may contain grouping separators. Early failures may return only status and message.
An illustrative transfer response:
{
"status": 1,
"message": "Transaction Successful",
"order_id": "P2N_EXAMPLE_ORDER_001",
"data": {
"txn_value": "100.00",
"balance": "900.00",
"request_id": "DMT202609260001",
"bank_reference": "EXAMPLE_BANK_REFERENCE"
}
}
Transfer status and retries
1means successful,2means rejected or failed, and3means the transfer result is unresolved. On a timeout or unresolved result, retain both references and use Transaction Status to reconcile before starting another transfer. Replaying a request is not guaranteed to be idempotent.
Rejections
A missing secret header returns status: 2 and message: "Secret Header not found!". Missing outletId returns "Outlet ID not found!"; an unavailable outlet returns "Invalid OutletId". Invalid or missing JSON returns "Invalid Json!". Field validation failures return "Invalid Parameters" with an errors object containing the field messages. Application failures can be returned in an HTTP-success response.
{
"status": 2,
"message": "Invalid Json!"
}
Service-specific response fields and behaviour
The wallet data.balance is captured when the transaction is initially debited. In a failure response it must not be interpreted as the current post-refund wallet balance. Use Wallet Balance separately if needed. data.bank_reference can be null or omitted.
beneficiaryId is used during beneficiary management; the actual transfer takes accountNumber and ifsc. This v2 route requires both otp and referenceKey even if a profile capability flag suggests OTP is optional. Do not silently omit either field. RTGS is accepted by local validation, but do not use it unless the DMT product/provider explicitly supports it.
Response examples for this operation
Synthetic examples adapted to the Pay2New wrapper. Reference tokens and dates are placeholders. Provider data can omit fields depending on the outcome; the application status and current returned references control the next step.
Transfer successful
{
"status": 1,
"message": "Transaction Successful",
"order_id": "P2N_SAMPLE_DMT_001",
"data": {
"txn_value": "100.00",
"balance": "900.00",
"request_id": "DMT202609260001",
"bank_reference": "SAMPLE_BANK_REFERENCE"
}
}
Transfer pending
{
"status": 3,
"message": "Transaction Under Process",
"order_id": "P2N_SAMPLE_DMT_001",
"data": {
"txn_value": "100.00",
"balance": "900.00",
"request_id": "DMT202609260001",
"bank_reference": null
}
}
Transfer failed
{
"status": 2,
"message": "Transaction Failed",
"order_id": "P2N_SAMPLE_DMT_001",
"data": {
"txn_value": "100.00",
"balance": "900.00",
"request_id": "DMT202609260001",
"bank_reference": null
}
}
Invalid outlet
{
"status": 2,
"message": "Invalid OutletId"
}
Service unavailable
{
"status": 2,
"message": "Oops, This service is not for you!"
}
Validation error
{
"status": 2,
"message": "Invalid Parameters",
"errors": {
"request_id": "This required field is missing or invalid."
}
}
Next step
For an uncertain result use Transaction Status with client_txn_id equal to your original request_id. Inspect order.status. Reconcile MONEY_TRANSFER webhooks against the same order.
See the DMT Integration Flow for all endpoints and Webhook Information for transaction notifications.
