Enkash Developer Portal
Home
Home
Login
  1. Home
  • Back to home
  • Payment Gateway APIs
  • Authorisation
    • Get Authorization Token
  • Order
    • Create Order
    • Get Order Status
    • Get Order By Merchant Order Id
    • Get BNPL Payment Methods
    • Get Dynamic UPI QR
    • UPI Intent Links
  • Payment
    • Submit Payment Request
    • Get Transaction Status
    • Validate OTP
    • Resend OTP
    • Payment Notify Request
    • Get UPI Transaction Status
    • Verify UPI VPA
  • Refund
    • Refund
  • Settlement
    • Get Settlement Payout By ID
    • Search Settlement Payouts
  • Split Settlement
    • Create Split Settlement Account
    • Update Split Settlement Account
    • Get All Split Settlement Account
    • Deactivate Split Settlement Account
    • Activate Split Settlement Account
    • Submit Payment with Split Details
    • Edit Or Deferred Split Settlement
  • E-Commerce Plugins
  • UPI QR
    • Create UPI QR
    • Get UPI QR
    • Search UPI QR
    • Create Customer
    • Search Customer
    • Cancel UPI QR
  • UPI Autopay
    • Create UPI Mandate
    • Update UPI Mandate
    • Revoke UPI Mandate
    • Get UPI Mandate
    • UPI Mandate Callback
    • Mandate Pre-debit Notification
    • Execute Mandate Debit
    • Mandate Debit Callback
  • Payment Links
    • Payment Link APIs
    • Create Payment Link
    • Get Payment Link Details
    • Delete Payment Link
    • Webhook Request
  1. Home

Payment Lifecycle and Request Structure

The EnKash Payment Gateway provides a secure and scalable platform for processing digital payments. To initiate a transaction, you must create a well-structured payment request containing essential payment details.

Payment Lifecycle#

Understanding payment statuses helps in managing transaction states effectively:
StatusDescription
CREATEDPayment request initialized.
AUTHORIZEDPayment authorized post OTP (if applicable).
PENDING_WITH_BANKAwaiting confirmation from the customer’s bank.
SUCCESSPayment successfully completed.
FAILEDPayment failed due to error, decline, or timeout.
CANCELLEDPayment cancelled by the user.
PARTIALLY_REFUNDEDA portion of the transaction amount has been refunded.
REFUNDEDFull amount has been refunded.

Payment Request Structure#

Submit a JSON payload with required fields based on the selected payment mode:
FieldTypeRequiredDescription
orderIdstringYesUnique identifier for the transaction.
paymentDetailobjectOptionalContains amount and currency.
paymentModestringYesAccepted values: NET_BANKING, UPI, CREDIT_CARD, DEBIT_CARD, PREPAID_CARD, PAY_LATER, WALLET, CORPORATE_CARD
cardHolderNamestringDependsRequired for card-based payments.
cardNumberstringDependsRequired for card-based payments.
cvvstringDependsRequired for card-based payments.
expirystringDependsFormat: MM/YY. Required for card-based payments.
bankCodestringDependsRequired for NetBanking, BNPL, and Wallet modes.
bnplPaymentOptionIdstringDependsRequired for BNPL mode.
vpastringDependsRequired for UPI mode.
accountNumberstringDependsRequired for UPI TPV. Must be between 9–36 characters.
ifscstringDependsRequired for UPI TPV. Must match ^[A-Z]{4}0[A-Z0-9]{6}$.

Example Payment Request#

{
  "orderId": "ORD123456789",
  "paymentDetail": {
    "amount": 1000,
    "currency": "INR"
  },
  "paymentMode": "CREDIT_CARD",
  "cardHolderName": "John Doe",
  "cardNumber": "4111111111111111",
  "cvv": "123",
  "expiry": "12/24",
  "bankCode": "HDFC",
  "vpa": "john.doe@upi",
  "accountNumber": "123456789012",
  "ifsc": "HDFC0001234"
}

Key Considerations#

UniqueorderId
Must be unique per transaction to avoid payment duplication.
Field Validation
Format and validate card/UPI/bank details on the client side to prevent backend errors.
Error Handling
Implement logic for status transitionsFAILED,PENDING_WITH_BANK,CANCELLED
Security
Ensure sensitive fields are handled over secure connections and never exposed on the client.
Modified at 2025-07-05 12:02:39
Previous
UPI Intent Links
Next
Submit Payment Request
Built with