@ekoindia/eps-context-mcp 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/data/eps.json +914 -1003
- package/package.json +1 -1
package/data/eps.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"meta": {
|
|
3
3
|
"org": "ekoindia",
|
|
4
4
|
"apiVersion": "v3",
|
|
5
|
-
"bundleVersion": "
|
|
5
|
+
"bundleVersion": "c9e5f932",
|
|
6
6
|
"environments": [
|
|
7
7
|
{
|
|
8
8
|
"id": "sandbox",
|
|
@@ -297,6 +297,14 @@
|
|
|
297
297
|
"description": "Sender's 10-digit mobile number.",
|
|
298
298
|
"example": "9123456789",
|
|
299
299
|
"in": "path"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "user_code",
|
|
303
|
+
"type": "string",
|
|
304
|
+
"required": true,
|
|
305
|
+
"description": "Agent user code (sent as a query parameter).",
|
|
306
|
+
"example": "20810200",
|
|
307
|
+
"in": "query"
|
|
300
308
|
}
|
|
301
309
|
],
|
|
302
310
|
"sampleRequest": {},
|
|
@@ -333,71 +341,109 @@
|
|
|
333
341
|
{
|
|
334
342
|
"name": "is_registered",
|
|
335
343
|
"type": "number",
|
|
336
|
-
"
|
|
337
|
-
"
|
|
338
|
-
"example": 1
|
|
339
|
-
},
|
|
340
|
-
{
|
|
341
|
-
"name": "sender_name",
|
|
342
|
-
"type": "string",
|
|
343
|
-
"description": "Registered name of the sender.",
|
|
344
|
-
"imp": true,
|
|
345
|
-
"example": "Ramesh Kumar"
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
"name": "ekyc_enabled",
|
|
349
|
-
"type": "string",
|
|
350
|
-
"description": "Whether biometric eKYC is enabled (\"1\" = yes).",
|
|
351
|
-
"example": "1"
|
|
344
|
+
"description": "Registration flag from the profile lookup. Read customer_profile.kyc_state to determine KYC completion.",
|
|
345
|
+
"example": 0
|
|
352
346
|
},
|
|
353
347
|
{
|
|
354
348
|
"name": "next_allowed_limit",
|
|
355
349
|
"type": "number",
|
|
356
|
-
"description": "Remaining transfer limit for the current month (in INR).",
|
|
357
350
|
"imp": true,
|
|
358
|
-
"
|
|
351
|
+
"description": "Remaining remittance limit currently available (INR).",
|
|
352
|
+
"example": 25000
|
|
359
353
|
},
|
|
360
354
|
{
|
|
361
355
|
"name": "kyc_state",
|
|
362
356
|
"type": "number",
|
|
363
|
-
"description": "
|
|
357
|
+
"description": "Top-level KYC flag for the lookup response.",
|
|
364
358
|
"example": 0
|
|
365
359
|
},
|
|
366
360
|
{
|
|
367
361
|
"name": "customer_profile",
|
|
368
362
|
"type": "object",
|
|
369
363
|
"imp": true,
|
|
370
|
-
"description": "Sender profile summary.",
|
|
364
|
+
"description": "Sender profile summary (present once KYC is complete).",
|
|
371
365
|
"children": [
|
|
372
366
|
{
|
|
373
367
|
"name": "name",
|
|
374
368
|
"type": "string",
|
|
375
|
-
"description": "Sender
|
|
376
|
-
"
|
|
369
|
+
"description": "Sender name.",
|
|
370
|
+
"imp": true,
|
|
371
|
+
"example": "Rahul"
|
|
377
372
|
},
|
|
378
373
|
{
|
|
379
374
|
"name": "mobile",
|
|
380
375
|
"type": "string",
|
|
381
376
|
"description": "Sender's mobile number.",
|
|
382
|
-
"example": "
|
|
377
|
+
"example": "9155927131"
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"name": "balance",
|
|
381
|
+
"type": "string",
|
|
382
|
+
"description": "Sender wallet balance (INR).",
|
|
383
|
+
"example": "0.00"
|
|
383
384
|
},
|
|
384
385
|
{
|
|
385
386
|
"name": "total_monthly_limit",
|
|
386
387
|
"type": "string",
|
|
387
|
-
"description": "
|
|
388
|
-
"example": "
|
|
388
|
+
"description": "Sender's monthly remittance limit (INR).",
|
|
389
|
+
"example": "25000.0"
|
|
389
390
|
},
|
|
390
391
|
{
|
|
391
392
|
"name": "next_allowed_limit",
|
|
392
393
|
"type": "string",
|
|
393
|
-
"description": "Remaining
|
|
394
|
-
"example": "
|
|
394
|
+
"description": "Remaining limit currently available (INR).",
|
|
395
|
+
"example": "25000.0"
|
|
395
396
|
},
|
|
396
397
|
{
|
|
397
|
-
"name": "
|
|
398
|
+
"name": "kyc_state",
|
|
398
399
|
"type": "number",
|
|
399
|
-
"description": "
|
|
400
|
+
"description": "Sender KYC state (1 = KYC complete on the profile).",
|
|
401
|
+
"imp": true,
|
|
400
402
|
"example": 1
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"name": "chart",
|
|
406
|
+
"type": "array",
|
|
407
|
+
"description": "Per-period limit-usage breakdown.",
|
|
408
|
+
"children": [
|
|
409
|
+
{
|
|
410
|
+
"name": "data_type_id",
|
|
411
|
+
"type": "number",
|
|
412
|
+
"description": "Identifier for the limit period/bucket.",
|
|
413
|
+
"example": 10
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"name": "data",
|
|
417
|
+
"type": "object",
|
|
418
|
+
"description": "Limit usage for the period.",
|
|
419
|
+
"children": [
|
|
420
|
+
{
|
|
421
|
+
"name": "unavailable",
|
|
422
|
+
"type": "number",
|
|
423
|
+
"description": "Amount blocked/unavailable (INR).",
|
|
424
|
+
"example": 0
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"name": "used",
|
|
428
|
+
"type": "number",
|
|
429
|
+
"description": "Amount already used (INR).",
|
|
430
|
+
"example": 0
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"name": "remaining",
|
|
434
|
+
"type": "number",
|
|
435
|
+
"description": "Remaining limit for the period (INR).",
|
|
436
|
+
"example": 25000
|
|
437
|
+
}
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"name": "label",
|
|
442
|
+
"type": "string",
|
|
443
|
+
"description": "Display label for the period.",
|
|
444
|
+
"example": ""
|
|
445
|
+
}
|
|
446
|
+
]
|
|
401
447
|
}
|
|
402
448
|
]
|
|
403
449
|
}
|
|
@@ -406,34 +452,59 @@
|
|
|
406
452
|
],
|
|
407
453
|
"sampleSuccessResponse": {
|
|
408
454
|
"status": 0,
|
|
455
|
+
"response_status_id": -1,
|
|
409
456
|
"response_type_id": 309,
|
|
410
457
|
"message": "Success!",
|
|
411
|
-
"response_status_id": -1,
|
|
412
458
|
"data": {
|
|
413
|
-
"is_registered":
|
|
414
|
-
"
|
|
415
|
-
"ekyc_enabled": "1",
|
|
416
|
-
"next_allowed_limit": 48000,
|
|
459
|
+
"is_registered": 0,
|
|
460
|
+
"next_allowed_limit": 25000,
|
|
417
461
|
"kyc_state": 0,
|
|
418
462
|
"customer_profile": {
|
|
419
|
-
"
|
|
420
|
-
"mobile": "
|
|
421
|
-
"
|
|
422
|
-
"next_allowed_limit": "
|
|
423
|
-
"
|
|
463
|
+
"total_monthly_limit": "25000.0",
|
|
464
|
+
"mobile": "9155927131",
|
|
465
|
+
"balance": "0.00",
|
|
466
|
+
"next_allowed_limit": "25000.0",
|
|
467
|
+
"name": "Rahul",
|
|
468
|
+
"kyc_state": 1,
|
|
469
|
+
"chart": [
|
|
470
|
+
{
|
|
471
|
+
"data_type_id": 10,
|
|
472
|
+
"data": {
|
|
473
|
+
"unavailable": 0,
|
|
474
|
+
"used": 0,
|
|
475
|
+
"remaining": 25000
|
|
476
|
+
},
|
|
477
|
+
"label": ""
|
|
478
|
+
}
|
|
479
|
+
]
|
|
424
480
|
}
|
|
425
481
|
}
|
|
426
482
|
},
|
|
427
483
|
"errorScenarios": [
|
|
428
484
|
{
|
|
429
|
-
"scenario": "Sender not
|
|
485
|
+
"scenario": "Sender not enrolled — proceed to Onboard Sender",
|
|
430
486
|
"statusCode": 200,
|
|
431
487
|
"example": {
|
|
432
|
-
"status":
|
|
433
|
-
"response_status_id":
|
|
434
|
-
"message": "Customer
|
|
488
|
+
"status": 308,
|
|
489
|
+
"response_status_id": 1,
|
|
490
|
+
"message": "Failure!Customer Not Enrolled",
|
|
435
491
|
"response_type_id": 308,
|
|
436
|
-
"data": {
|
|
492
|
+
"data": {
|
|
493
|
+
"ekyc_enabled": ""
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"scenario": "Enrolled on Eko, KYC pending on Fino — proceed to Sender eKYC",
|
|
499
|
+
"statusCode": 200,
|
|
500
|
+
"example": {
|
|
501
|
+
"status": 0,
|
|
502
|
+
"response_status_id": 0,
|
|
503
|
+
"message": "Customer KYC Pending",
|
|
504
|
+
"response_type_id": 2134,
|
|
505
|
+
"data": {
|
|
506
|
+
"otp_ref_id": ""
|
|
507
|
+
}
|
|
437
508
|
}
|
|
438
509
|
}
|
|
439
510
|
],
|
|
@@ -470,7 +541,7 @@
|
|
|
470
541
|
"summary": "Register a new customer as a DMT-Fino sender using basic KYC details.",
|
|
471
542
|
"category": "bc",
|
|
472
543
|
"relevance": "M",
|
|
473
|
-
"description": "Registers a new customer in the DMT-Fino system. Provide the customer's name, date of birth, and residence address. On success the sender is
|
|
544
|
+
"description": "Registers a new customer in the DMT-Fino system. Provide the customer's name, date of birth, and residence address. On success the sender is opened on Eko but KYC on Fino is still pending — complete biometric eKYC (Sender eKYC → Validate eKYC OTP) next. If the sender was already onboarded on Fino externally, the response instead matches the KYC-complete profile from Get Sender Profile (response_type_id 309) and no eKYC is required. After onboarding, call Get Sender Profile to read the sender's current stage.",
|
|
474
545
|
"bestFor": "First-time sender registration in the DMT flow.",
|
|
475
546
|
"docsUrl": "https://eps.eko.in/docs/dmt-onboard-sender",
|
|
476
547
|
"headers": [
|
|
@@ -549,8 +620,8 @@
|
|
|
549
620
|
"name": "residence_address",
|
|
550
621
|
"type": "string",
|
|
551
622
|
"required": true,
|
|
552
|
-
"description": "Customer's residence address as a JSON-encoded
|
|
553
|
-
"example": "
|
|
623
|
+
"description": "Customer's residence address as a JSON-encoded object with keys: line, city, state, pincode, district, area.",
|
|
624
|
+
"example": "{\"line\":\"India\",\"city\":\"Indore\",\"state\":\"Madhya Pradesh\",\"pincode\":\"226024\",\"district\":\"Indore\",\"area\":\"gita bhavan\"}",
|
|
554
625
|
"in": "body"
|
|
555
626
|
}
|
|
556
627
|
],
|
|
@@ -559,7 +630,7 @@
|
|
|
559
630
|
"client_ref_id": "2026010100123456789",
|
|
560
631
|
"name": "Ramesh Kumar",
|
|
561
632
|
"dob": "1990-05-15",
|
|
562
|
-
"residence_address": "
|
|
633
|
+
"residence_address": "{\"line\":\"India\",\"city\":\"Indore\",\"state\":\"Madhya Pradesh\",\"pincode\":\"226024\",\"district\":\"Indore\",\"area\":\"gita bhavan\"}"
|
|
563
634
|
},
|
|
564
635
|
"responseFields": [
|
|
565
636
|
{
|
|
@@ -591,30 +662,11 @@
|
|
|
591
662
|
"type": "object",
|
|
592
663
|
"description": "API-specific response payload.",
|
|
593
664
|
"children": [
|
|
594
|
-
{
|
|
595
|
-
"name": "customer_id",
|
|
596
|
-
"type": "string",
|
|
597
|
-
"description": "Mobile number of the newly registered sender.",
|
|
598
|
-
"imp": true,
|
|
599
|
-
"example": "9123456789"
|
|
600
|
-
},
|
|
601
|
-
{
|
|
602
|
-
"name": "state",
|
|
603
|
-
"type": "number",
|
|
604
|
-
"description": "Account state: 10=Pending KYC verification.",
|
|
605
|
-
"example": 10
|
|
606
|
-
},
|
|
607
665
|
{
|
|
608
666
|
"name": "otp_ref_id",
|
|
609
667
|
"type": "string",
|
|
610
|
-
"description": "
|
|
611
|
-
"example": "
|
|
612
|
-
},
|
|
613
|
-
{
|
|
614
|
-
"name": "available_limit",
|
|
615
|
-
"type": "number",
|
|
616
|
-
"description": "Initial transfer limit before eKYC (in INR). Typically ₹5,000.",
|
|
617
|
-
"example": 5000
|
|
668
|
+
"description": "OTP reference placeholder returned with the KYC-pending status. Empty until eKYC is initiated via Sender eKYC.",
|
|
669
|
+
"example": ""
|
|
618
670
|
}
|
|
619
671
|
]
|
|
620
672
|
}
|
|
@@ -622,29 +674,47 @@
|
|
|
622
674
|
"sampleSuccessResponse": {
|
|
623
675
|
"status": 0,
|
|
624
676
|
"response_status_id": 0,
|
|
625
|
-
"message": "Customer
|
|
626
|
-
"response_type_id":
|
|
677
|
+
"message": "Customer KYC Pending",
|
|
678
|
+
"response_type_id": 2134,
|
|
627
679
|
"data": {
|
|
628
|
-
"
|
|
629
|
-
"state": 10,
|
|
630
|
-
"otp_ref_id": "OTP20240101001",
|
|
631
|
-
"available_limit": 5000
|
|
680
|
+
"otp_ref_id": ""
|
|
632
681
|
}
|
|
633
682
|
},
|
|
634
683
|
"errorScenarios": [
|
|
635
684
|
{
|
|
636
|
-
"scenario": "
|
|
685
|
+
"scenario": "Alternate success — sender already onboarded on Eko, KYC pending",
|
|
637
686
|
"statusCode": 200,
|
|
638
687
|
"example": {
|
|
639
|
-
"status":
|
|
640
|
-
"response_status_id":
|
|
641
|
-
"message": "
|
|
642
|
-
"response_type_id":
|
|
643
|
-
"data": {
|
|
688
|
+
"status": 0,
|
|
689
|
+
"response_status_id": 0,
|
|
690
|
+
"message": "Wallet opened successfully.",
|
|
691
|
+
"response_type_id": 300,
|
|
692
|
+
"data": {
|
|
693
|
+
"customer_id_type": "mobile_number",
|
|
694
|
+
"state_desc": "Non-Kyc",
|
|
695
|
+
"state": "2",
|
|
696
|
+
"customer_id": "9002331157"
|
|
697
|
+
}
|
|
644
698
|
}
|
|
645
699
|
}
|
|
646
700
|
],
|
|
647
|
-
"responseTypes": [
|
|
701
|
+
"responseTypes": [
|
|
702
|
+
{
|
|
703
|
+
"id": 2134,
|
|
704
|
+
"meaning": "Onboarded, KYC pending — proceed to Sender eKYC",
|
|
705
|
+
"next": "dmt-fino-sender-ekyc"
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
"id": 300,
|
|
709
|
+
"meaning": "Already onboarded, KYC pending — re-check stage with Get Sender Profile",
|
|
710
|
+
"next": "dmt-get-sender"
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"id": 309,
|
|
714
|
+
"meaning": "Already onboarded on Fino — KYC complete, proceed to Recipients",
|
|
715
|
+
"next": "dmt-get-recipients"
|
|
716
|
+
}
|
|
717
|
+
]
|
|
648
718
|
},
|
|
649
719
|
{
|
|
650
720
|
"slug": "dmt-fino-sender-ekyc",
|
|
@@ -656,7 +726,7 @@
|
|
|
656
726
|
"summary": "Initiate biometric Aadhaar eKYC to verify and upgrade a DMT sender's account.",
|
|
657
727
|
"category": "bc",
|
|
658
728
|
"relevance": "M",
|
|
659
|
-
"description": "Performs biometric eKYC using fingerprint data linked to the sender's Aadhaar number. Requires a compatible RD-service device; the PID XML is captured at the agent's terminal and submitted with the
|
|
729
|
+
"description": "Performs biometric eKYC using fingerprint data linked to the sender's Aadhaar number. Requires a compatible RD-service device; the PID XML is captured at the agent's terminal and submitted with the sender's Aadhaar number (include the `wadh` value when generating the PID). On success the system dispatches an OTP for confirmation; call Validate eKYC OTP next. A successful eKYC upgrades the sender's monthly limit from ₹5,000 to ₹25,000.\n\nTo capture the `piddata` PID block with an RDService-compliant fingerprint scanner, see the [Aadhaar Biometric Authentication guide](/docs/aadhaar-biometric-rdservice).",
|
|
660
730
|
"bestFor": "KYC upgrade for new senders to raise monthly transfer limits.",
|
|
661
731
|
"docsUrl": "https://eps.eko.in/docs/dmt-fino-sender-ekyc",
|
|
662
732
|
"headers": [
|
|
@@ -768,24 +838,31 @@
|
|
|
768
838
|
"type": "object",
|
|
769
839
|
"description": "API-specific response payload.",
|
|
770
840
|
"children": [
|
|
841
|
+
{
|
|
842
|
+
"name": "user_code",
|
|
843
|
+
"type": "string",
|
|
844
|
+
"description": "Agent user code associated with the KYC request.",
|
|
845
|
+
"example": "10472151"
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
"name": "intent_id",
|
|
849
|
+
"type": "string",
|
|
850
|
+
"description": "Reserved intent identifier (empty in the standard flow).",
|
|
851
|
+
"example": ""
|
|
852
|
+
},
|
|
771
853
|
{
|
|
772
854
|
"name": "kyc_request_id",
|
|
773
855
|
"type": "string",
|
|
774
856
|
"description": "Unique identifier for this KYC request. Required for the Validate eKYC OTP step.",
|
|
775
857
|
"imp": true,
|
|
776
|
-
"example": "
|
|
858
|
+
"example": "9332126"
|
|
777
859
|
},
|
|
778
860
|
{
|
|
779
861
|
"name": "otp_ref_id",
|
|
780
862
|
"type": "string",
|
|
781
|
-
"description": "Reference ID for the OTP sent to the sender's Aadhaar-linked mobile.",
|
|
782
|
-
"
|
|
783
|
-
|
|
784
|
-
{
|
|
785
|
-
"name": "mobile",
|
|
786
|
-
"type": "string",
|
|
787
|
-
"description": "Masked mobile number to which the OTP was dispatched.",
|
|
788
|
-
"example": "XXXXXXX789"
|
|
863
|
+
"description": "Reference ID for the OTP sent to the sender's Aadhaar-linked mobile. Required for the Validate eKYC OTP step.",
|
|
864
|
+
"imp": true,
|
|
865
|
+
"example": "666803844"
|
|
789
866
|
}
|
|
790
867
|
]
|
|
791
868
|
}
|
|
@@ -793,28 +870,50 @@
|
|
|
793
870
|
"sampleSuccessResponse": {
|
|
794
871
|
"status": 0,
|
|
795
872
|
"response_status_id": 0,
|
|
796
|
-
"message": "
|
|
797
|
-
"response_type_id":
|
|
873
|
+
"message": "Validate the OTP",
|
|
874
|
+
"response_type_id": 2129,
|
|
798
875
|
"data": {
|
|
799
|
-
"
|
|
800
|
-
"
|
|
801
|
-
"
|
|
876
|
+
"user_code": "10472151",
|
|
877
|
+
"intent_id": "",
|
|
878
|
+
"kyc_request_id": "9332126",
|
|
879
|
+
"otp_ref_id": "666803844"
|
|
802
880
|
}
|
|
803
881
|
},
|
|
804
882
|
"errorScenarios": [
|
|
805
883
|
{
|
|
806
|
-
"scenario": "
|
|
884
|
+
"scenario": "Incorrect PID data — eKYC verification failed",
|
|
807
885
|
"statusCode": 200,
|
|
808
886
|
"example": {
|
|
809
|
-
"status":
|
|
810
|
-
"response_status_id":
|
|
811
|
-
"message": "Customer
|
|
812
|
-
"response_type_id":
|
|
813
|
-
"data": {
|
|
887
|
+
"status": 2135,
|
|
888
|
+
"response_status_id": 1,
|
|
889
|
+
"message": "Customer KYC Pending",
|
|
890
|
+
"response_type_id": 2135,
|
|
891
|
+
"data": {
|
|
892
|
+
"description": "K-100 EKYC Verification failed"
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
"scenario": "Sender already has an existing relationship with the bank",
|
|
898
|
+
"statusCode": 200,
|
|
899
|
+
"example": {
|
|
900
|
+
"status": 2135,
|
|
901
|
+
"response_status_id": 1,
|
|
902
|
+
"message": "Customer KYC Pending",
|
|
903
|
+
"response_type_id": 2135,
|
|
904
|
+
"data": {
|
|
905
|
+
"description": "Sorry! Since you already have an existing relationship with the bank"
|
|
906
|
+
}
|
|
814
907
|
}
|
|
815
908
|
}
|
|
816
909
|
],
|
|
817
|
-
"responseTypes": [
|
|
910
|
+
"responseTypes": [
|
|
911
|
+
{
|
|
912
|
+
"id": 2129,
|
|
913
|
+
"meaning": "OTP sent — proceed to Validate eKYC OTP",
|
|
914
|
+
"next": "dmt-fino-validate-ekyc-otp"
|
|
915
|
+
}
|
|
916
|
+
]
|
|
818
917
|
},
|
|
819
918
|
{
|
|
820
919
|
"slug": "dmt-fino-validate-ekyc-otp",
|
|
@@ -948,24 +1047,11 @@
|
|
|
948
1047
|
"description": "API-specific response payload.",
|
|
949
1048
|
"children": [
|
|
950
1049
|
{
|
|
951
|
-
"name": "
|
|
1050
|
+
"name": "user_code",
|
|
952
1051
|
"type": "string",
|
|
953
|
-
"description": "
|
|
954
|
-
"example": "9123456789"
|
|
955
|
-
},
|
|
956
|
-
{
|
|
957
|
-
"name": "kyc_verified",
|
|
958
|
-
"type": "boolean",
|
|
959
|
-
"description": "Confirms successful eKYC completion.",
|
|
960
|
-
"imp": true,
|
|
961
|
-
"example": true
|
|
962
|
-
},
|
|
963
|
-
{
|
|
964
|
-
"name": "available_limit",
|
|
965
|
-
"type": "number",
|
|
966
|
-
"description": "Updated monthly transfer limit after KYC (in INR).",
|
|
1052
|
+
"description": "Agent user code for the now KYC-verified sender. eKYC is complete on success.",
|
|
967
1053
|
"imp": true,
|
|
968
|
-
"example":
|
|
1054
|
+
"example": "10472151"
|
|
969
1055
|
}
|
|
970
1056
|
]
|
|
971
1057
|
}
|
|
@@ -973,35 +1059,50 @@
|
|
|
973
1059
|
"sampleSuccessResponse": {
|
|
974
1060
|
"status": 0,
|
|
975
1061
|
"response_status_id": 0,
|
|
976
|
-
"message": "
|
|
977
|
-
"response_type_id":
|
|
1062
|
+
"message": "Customer Registration Completed",
|
|
1063
|
+
"response_type_id": 2132,
|
|
978
1064
|
"data": {
|
|
979
|
-
"
|
|
980
|
-
"kyc_verified": true,
|
|
981
|
-
"available_limit": 25000
|
|
1065
|
+
"user_code": "10472151"
|
|
982
1066
|
}
|
|
983
1067
|
},
|
|
984
1068
|
"errorScenarios": [
|
|
1069
|
+
{
|
|
1070
|
+
"scenario": "Sender already registered",
|
|
1071
|
+
"statusCode": 200,
|
|
1072
|
+
"example": {
|
|
1073
|
+
"status": 2131,
|
|
1074
|
+
"response_status_id": 1,
|
|
1075
|
+
"message": "Validate OTP Failed",
|
|
1076
|
+
"response_type_id": 2131,
|
|
1077
|
+
"data": {
|
|
1078
|
+
"description": "Customer Already registred"
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
},
|
|
985
1082
|
{
|
|
986
1083
|
"scenario": "Incorrect OTP entered",
|
|
987
1084
|
"statusCode": 200,
|
|
988
1085
|
"example": {
|
|
989
|
-
"status":
|
|
1086
|
+
"status": 2131,
|
|
990
1087
|
"response_status_id": 302,
|
|
991
|
-
"message": "
|
|
992
|
-
"response_type_id":
|
|
993
|
-
"data": {
|
|
1088
|
+
"message": "Validate OTP Failed",
|
|
1089
|
+
"response_type_id": 2131,
|
|
1090
|
+
"data": {
|
|
1091
|
+
"description": "Wrong OTP"
|
|
1092
|
+
}
|
|
994
1093
|
}
|
|
995
1094
|
},
|
|
996
1095
|
{
|
|
997
1096
|
"scenario": "OTP has expired",
|
|
998
1097
|
"statusCode": 200,
|
|
999
1098
|
"example": {
|
|
1000
|
-
"status":
|
|
1099
|
+
"status": 2131,
|
|
1001
1100
|
"response_status_id": 303,
|
|
1002
|
-
"message": "OTP
|
|
1003
|
-
"response_type_id":
|
|
1004
|
-
"data": {
|
|
1101
|
+
"message": "Validate OTP Failed",
|
|
1102
|
+
"response_type_id": 2131,
|
|
1103
|
+
"data": {
|
|
1104
|
+
"description": "OTP expired"
|
|
1105
|
+
}
|
|
1005
1106
|
}
|
|
1006
1107
|
}
|
|
1007
1108
|
],
|
|
@@ -1109,59 +1210,106 @@
|
|
|
1109
1210
|
"description": "API-specific response payload.",
|
|
1110
1211
|
"children": [
|
|
1111
1212
|
{
|
|
1112
|
-
"name": "
|
|
1213
|
+
"name": "pan_required",
|
|
1113
1214
|
"type": "number",
|
|
1114
|
-
"description": "
|
|
1215
|
+
"description": "PAN requirement flag for the sender.",
|
|
1115
1216
|
"example": 2
|
|
1116
1217
|
},
|
|
1117
1218
|
{
|
|
1118
|
-
"name": "
|
|
1219
|
+
"name": "remaining_limit_before_pan_required",
|
|
1220
|
+
"type": "number",
|
|
1221
|
+
"description": "Amount the sender can still transfer before PAN becomes mandatory (INR).",
|
|
1222
|
+
"example": 50000
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
"name": "recipient_list",
|
|
1119
1226
|
"type": "array",
|
|
1120
|
-
"description": "
|
|
1227
|
+
"description": "Registered beneficiaries for this sender.",
|
|
1121
1228
|
"children": [
|
|
1122
1229
|
{
|
|
1123
1230
|
"name": "recipient_id",
|
|
1124
1231
|
"type": "number",
|
|
1125
|
-
"description": "
|
|
1232
|
+
"description": "Identifier used in the Send Transaction OTP and Execute Transaction APIs.",
|
|
1126
1233
|
"imp": true,
|
|
1127
|
-
"example":
|
|
1234
|
+
"example": 117015428
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
"name": "beneficiary_id",
|
|
1238
|
+
"type": "number",
|
|
1239
|
+
"description": "Beneficiary identifier (mirrors recipient_id).",
|
|
1240
|
+
"example": 117015428
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
"name": "bank_recipient_id",
|
|
1244
|
+
"type": "number",
|
|
1245
|
+
"description": "Bank-side recipient identifier.",
|
|
1246
|
+
"example": 117015428
|
|
1128
1247
|
},
|
|
1129
1248
|
{
|
|
1130
1249
|
"name": "recipient_name",
|
|
1131
1250
|
"type": "string",
|
|
1132
|
-
"description": "
|
|
1251
|
+
"description": "Beneficiary name.",
|
|
1133
1252
|
"imp": true,
|
|
1134
|
-
"example": "
|
|
1253
|
+
"example": "yashwant basnett"
|
|
1135
1254
|
},
|
|
1136
1255
|
{
|
|
1137
|
-
"name": "
|
|
1256
|
+
"name": "recipient_mobile",
|
|
1257
|
+
"type": "string",
|
|
1258
|
+
"description": "Beneficiary mobile number.",
|
|
1259
|
+
"example": "9002331157"
|
|
1260
|
+
},
|
|
1261
|
+
{
|
|
1262
|
+
"name": "bank",
|
|
1138
1263
|
"type": "string",
|
|
1139
|
-
"description": "Beneficiary
|
|
1140
|
-
"example": "
|
|
1264
|
+
"description": "Beneficiary bank name.",
|
|
1265
|
+
"example": "State Bank of India"
|
|
1141
1266
|
},
|
|
1142
1267
|
{
|
|
1143
1268
|
"name": "ifsc",
|
|
1144
1269
|
"type": "string",
|
|
1145
|
-
"description": "IFSC code
|
|
1146
|
-
"example": "
|
|
1270
|
+
"description": "Beneficiary bank IFSC code.",
|
|
1271
|
+
"example": "SBIN0007515"
|
|
1147
1272
|
},
|
|
1148
1273
|
{
|
|
1149
|
-
"name": "
|
|
1274
|
+
"name": "account",
|
|
1150
1275
|
"type": "string",
|
|
1151
|
-
"description": "
|
|
1152
|
-
"example": "
|
|
1276
|
+
"description": "Beneficiary bank account number.",
|
|
1277
|
+
"example": "38759149196"
|
|
1153
1278
|
},
|
|
1154
1279
|
{
|
|
1155
|
-
"name": "
|
|
1280
|
+
"name": "account_type",
|
|
1156
1281
|
"type": "string",
|
|
1157
|
-
"description": "
|
|
1158
|
-
"example": "
|
|
1282
|
+
"description": "Type of the beneficiary account.",
|
|
1283
|
+
"example": "Bank Account"
|
|
1284
|
+
},
|
|
1285
|
+
{
|
|
1286
|
+
"name": "ifsc_status",
|
|
1287
|
+
"type": "number",
|
|
1288
|
+
"description": "Whether the IFSC is valid/active (1 = valid).",
|
|
1289
|
+
"example": 1
|
|
1159
1290
|
},
|
|
1160
1291
|
{
|
|
1161
1292
|
"name": "is_verified",
|
|
1162
|
-
"type": "
|
|
1163
|
-
"description": "Whether the
|
|
1164
|
-
"example":
|
|
1293
|
+
"type": "number",
|
|
1294
|
+
"description": "Whether the account has been penny-drop verified (1 = verified).",
|
|
1295
|
+
"example": 0
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
"name": "is_otp_required",
|
|
1299
|
+
"type": "string",
|
|
1300
|
+
"description": "Whether an OTP is required to transact to this recipient.",
|
|
1301
|
+
"example": "0"
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
"name": "pipes",
|
|
1305
|
+
"type": "object",
|
|
1306
|
+
"description": "Available settlement pipes for this recipient, keyed by pipe id.",
|
|
1307
|
+
"example": {
|
|
1308
|
+
"3": {
|
|
1309
|
+
"pipe": 3,
|
|
1310
|
+
"status": 1
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1165
1313
|
}
|
|
1166
1314
|
]
|
|
1167
1315
|
}
|
|
@@ -1172,33 +1320,71 @@
|
|
|
1172
1320
|
"status": 0,
|
|
1173
1321
|
"response_status_id": 0,
|
|
1174
1322
|
"message": "Success",
|
|
1175
|
-
"response_type_id":
|
|
1323
|
+
"response_type_id": 23,
|
|
1176
1324
|
"data": {
|
|
1177
|
-
"
|
|
1178
|
-
"
|
|
1325
|
+
"pan_required": 2,
|
|
1326
|
+
"recipient_list": [
|
|
1179
1327
|
{
|
|
1180
|
-
"recipient_id":
|
|
1181
|
-
"
|
|
1182
|
-
"
|
|
1183
|
-
"
|
|
1184
|
-
"
|
|
1185
|
-
"
|
|
1186
|
-
"
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
"
|
|
1190
|
-
"
|
|
1191
|
-
"
|
|
1192
|
-
"
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1328
|
+
"recipient_id": 117015428,
|
|
1329
|
+
"beneficiary_id": 117015428,
|
|
1330
|
+
"bank_recipient_id": 117015428,
|
|
1331
|
+
"recipient_name": "yashwant basnett",
|
|
1332
|
+
"recipient_mobile": "9002331157",
|
|
1333
|
+
"bank": "State Bank of India",
|
|
1334
|
+
"ifsc": "SBIN0007515",
|
|
1335
|
+
"account": "38759149196",
|
|
1336
|
+
"account_type": "Bank Account",
|
|
1337
|
+
"ifsc_status": 1,
|
|
1338
|
+
"is_verified": 0,
|
|
1339
|
+
"is_otp_required": "0",
|
|
1340
|
+
"pipes": {
|
|
1341
|
+
"3": {
|
|
1342
|
+
"pipe": 3,
|
|
1343
|
+
"status": 1
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1196
1346
|
}
|
|
1197
|
-
]
|
|
1347
|
+
],
|
|
1348
|
+
"remaining_limit_before_pan_required": 50000
|
|
1198
1349
|
}
|
|
1199
1350
|
},
|
|
1200
|
-
"errorScenarios": [
|
|
1201
|
-
|
|
1351
|
+
"errorScenarios": [
|
|
1352
|
+
{
|
|
1353
|
+
"scenario": "No recipients registered yet — add one",
|
|
1354
|
+
"statusCode": 200,
|
|
1355
|
+
"example": {
|
|
1356
|
+
"status": 0,
|
|
1357
|
+
"response_status_id": -1,
|
|
1358
|
+
"message": "No recepients found",
|
|
1359
|
+
"response_type_id": 22
|
|
1360
|
+
}
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"scenario": "Customer does not exist in system",
|
|
1364
|
+
"statusCode": 200,
|
|
1365
|
+
"example": {
|
|
1366
|
+
"status": 463,
|
|
1367
|
+
"response_status_id": 1,
|
|
1368
|
+
"message": "customer_id does not exist in system",
|
|
1369
|
+
"response_type_id": -1,
|
|
1370
|
+
"invalid_params": {
|
|
1371
|
+
"customer_id": "Customer does not exist in System"
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
],
|
|
1376
|
+
"responseTypes": [
|
|
1377
|
+
{
|
|
1378
|
+
"id": 22,
|
|
1379
|
+
"meaning": "No recipients — add one before transacting",
|
|
1380
|
+
"next": "dmt-add-recipient"
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
"id": 23,
|
|
1384
|
+
"meaning": "Recipients found — proceed to Send Transaction OTP",
|
|
1385
|
+
"next": "dmt-send-otp"
|
|
1386
|
+
}
|
|
1387
|
+
]
|
|
1202
1388
|
},
|
|
1203
1389
|
{
|
|
1204
1390
|
"slug": "dmt-add-recipient",
|
|
@@ -1206,11 +1392,11 @@
|
|
|
1206
1392
|
"productName": "Domestic Money Transfer (DMT)",
|
|
1207
1393
|
"name": "Add Recipient",
|
|
1208
1394
|
"method": "POST",
|
|
1209
|
-
"path": "/customer/payment/dmt-fino/sender/{customer_id}/
|
|
1395
|
+
"path": "/customer/payment/dmt-fino/sender/{customer_id}/recipient",
|
|
1210
1396
|
"summary": "Register a new beneficiary under a sender's DMT-Fino account.",
|
|
1211
1397
|
"category": "bc",
|
|
1212
1398
|
"relevance": "M",
|
|
1213
|
-
"description": "Adds a new beneficiary to the sender's saved recipients list. Provide the recipient's full name, bank account number, IFSC code, and mobile number.
|
|
1399
|
+
"description": "Adds a new beneficiary to the sender's saved recipients list. Provide the recipient's full name, bank account number, IFSC code, and mobile number. On success a recipient_id is returned; use it in Send Transaction OTP and Execute Transaction. The system may validate the account via penny-drop before activating the recipient.",
|
|
1214
1400
|
"bestFor": "Adding a new beneficiary before a first-time transfer.",
|
|
1215
1401
|
"docsUrl": "https://eps.eko.in/docs/dmt-add-recipient",
|
|
1216
1402
|
"headers": [
|
|
@@ -1270,19 +1456,19 @@
|
|
|
1270
1456
|
"in": "path"
|
|
1271
1457
|
},
|
|
1272
1458
|
{
|
|
1273
|
-
"name": "
|
|
1459
|
+
"name": "recipient_mobile",
|
|
1274
1460
|
"type": "string",
|
|
1275
1461
|
"required": true,
|
|
1276
|
-
"description": "
|
|
1277
|
-
"example": "
|
|
1462
|
+
"description": "Beneficiary's 10-digit mobile number.",
|
|
1463
|
+
"example": "9002331157",
|
|
1278
1464
|
"in": "body"
|
|
1279
1465
|
},
|
|
1280
1466
|
{
|
|
1281
|
-
"name": "
|
|
1467
|
+
"name": "recipient_name",
|
|
1282
1468
|
"type": "string",
|
|
1283
1469
|
"required": true,
|
|
1284
|
-
"description": "
|
|
1285
|
-
"example": "
|
|
1470
|
+
"description": "Full name of the beneficiary as it appears on their bank account.",
|
|
1471
|
+
"example": "yashwant basnett",
|
|
1286
1472
|
"in": "body"
|
|
1287
1473
|
},
|
|
1288
1474
|
{
|
|
@@ -1290,43 +1476,25 @@
|
|
|
1290
1476
|
"type": "string",
|
|
1291
1477
|
"required": true,
|
|
1292
1478
|
"description": "IFSC code of the beneficiary's bank branch.",
|
|
1293
|
-
"example": "
|
|
1479
|
+
"example": "SBIN0007515",
|
|
1294
1480
|
"in": "body"
|
|
1295
1481
|
},
|
|
1296
1482
|
{
|
|
1297
|
-
"name": "
|
|
1298
|
-
"type": "number",
|
|
1299
|
-
"required": true,
|
|
1300
|
-
"description": "Unique bank identifier from Eko's bank list API.",
|
|
1301
|
-
"example": 20,
|
|
1302
|
-
"in": "body"
|
|
1303
|
-
},
|
|
1304
|
-
{
|
|
1305
|
-
"name": "recipient_mobile",
|
|
1306
|
-
"type": "string",
|
|
1307
|
-
"required": true,
|
|
1308
|
-
"description": "10-digit mobile number of the recipient.",
|
|
1309
|
-
"example": "9988776655",
|
|
1310
|
-
"in": "body"
|
|
1311
|
-
},
|
|
1312
|
-
{
|
|
1313
|
-
"name": "recipient_type",
|
|
1483
|
+
"name": "account",
|
|
1314
1484
|
"type": "string",
|
|
1315
1485
|
"required": true,
|
|
1316
|
-
"description": "
|
|
1317
|
-
"example": "
|
|
1486
|
+
"description": "Beneficiary's bank account number.",
|
|
1487
|
+
"example": "38759149196",
|
|
1318
1488
|
"in": "body"
|
|
1319
1489
|
}
|
|
1320
1490
|
],
|
|
1321
1491
|
"sampleRequest": {
|
|
1322
1492
|
"initiator_id": "9962981729",
|
|
1323
1493
|
"client_ref_id": "2026010100123456789",
|
|
1324
|
-
"
|
|
1325
|
-
"
|
|
1326
|
-
"ifsc": "
|
|
1327
|
-
"
|
|
1328
|
-
"recipient_mobile": "9988776655",
|
|
1329
|
-
"recipient_type": "3"
|
|
1494
|
+
"recipient_mobile": "9002331157",
|
|
1495
|
+
"recipient_name": "yashwant basnett",
|
|
1496
|
+
"ifsc": "SBIN0007515",
|
|
1497
|
+
"account": "38759149196"
|
|
1330
1498
|
},
|
|
1331
1499
|
"responseFields": [
|
|
1332
1500
|
{
|
|
@@ -1361,34 +1529,39 @@
|
|
|
1361
1529
|
{
|
|
1362
1530
|
"name": "recipient_id",
|
|
1363
1531
|
"type": "number",
|
|
1364
|
-
"description": "Unique identifier assigned to the newly added recipient. Required for Send OTP and
|
|
1532
|
+
"description": "Unique identifier assigned to the newly added recipient. Required for Send Transaction OTP and Execute Transaction.",
|
|
1365
1533
|
"imp": true,
|
|
1366
|
-
"example":
|
|
1534
|
+
"example": 117015428
|
|
1367
1535
|
},
|
|
1368
1536
|
{
|
|
1369
|
-
"name": "
|
|
1537
|
+
"name": "customer_id",
|
|
1370
1538
|
"type": "string",
|
|
1371
|
-
"description": "
|
|
1372
|
-
"
|
|
1373
|
-
"example": "Sunil Sharma"
|
|
1539
|
+
"description": "Sender's mobile number (echoed back).",
|
|
1540
|
+
"example": "9155927131"
|
|
1374
1541
|
},
|
|
1375
1542
|
{
|
|
1376
|
-
"name": "
|
|
1543
|
+
"name": "recipient_mobile",
|
|
1377
1544
|
"type": "string",
|
|
1378
|
-
"description": "
|
|
1379
|
-
"example": "
|
|
1545
|
+
"description": "Beneficiary mobile number (echoed back).",
|
|
1546
|
+
"example": "9002331157"
|
|
1380
1547
|
},
|
|
1381
1548
|
{
|
|
1382
|
-
"name": "
|
|
1549
|
+
"name": "initiator_id",
|
|
1383
1550
|
"type": "string",
|
|
1384
|
-
"description": "
|
|
1385
|
-
"example": "
|
|
1551
|
+
"description": "Partner initiator ID (echoed back).",
|
|
1552
|
+
"example": "<initiator_id>"
|
|
1386
1553
|
},
|
|
1387
1554
|
{
|
|
1388
|
-
"name": "
|
|
1389
|
-
"type": "
|
|
1390
|
-
"description": "
|
|
1391
|
-
"example":
|
|
1555
|
+
"name": "pipes",
|
|
1556
|
+
"type": "object",
|
|
1557
|
+
"description": "Available settlement pipes for the new recipient.",
|
|
1558
|
+
"example": {}
|
|
1559
|
+
},
|
|
1560
|
+
{
|
|
1561
|
+
"name": "otp_ref_id",
|
|
1562
|
+
"type": "string",
|
|
1563
|
+
"description": "OTP reference placeholder (empty on add).",
|
|
1564
|
+
"example": ""
|
|
1392
1565
|
}
|
|
1393
1566
|
]
|
|
1394
1567
|
}
|
|
@@ -1396,14 +1569,15 @@
|
|
|
1396
1569
|
"sampleSuccessResponse": {
|
|
1397
1570
|
"status": 0,
|
|
1398
1571
|
"response_status_id": 0,
|
|
1399
|
-
"message": "
|
|
1400
|
-
"response_type_id":
|
|
1572
|
+
"message": "Success!Please transact using Recipientid",
|
|
1573
|
+
"response_type_id": 43,
|
|
1401
1574
|
"data": {
|
|
1402
|
-
"recipient_id":
|
|
1403
|
-
"
|
|
1404
|
-
"
|
|
1405
|
-
"
|
|
1406
|
-
"
|
|
1575
|
+
"recipient_id": 117015428,
|
|
1576
|
+
"customer_id": "9155927131",
|
|
1577
|
+
"recipient_mobile": "9002331157",
|
|
1578
|
+
"initiator_id": "<initiator_id>",
|
|
1579
|
+
"pipes": {},
|
|
1580
|
+
"otp_ref_id": ""
|
|
1407
1581
|
}
|
|
1408
1582
|
},
|
|
1409
1583
|
"errorScenarios": [
|
|
@@ -1411,15 +1585,34 @@
|
|
|
1411
1585
|
"scenario": "Recipient already registered for this sender",
|
|
1412
1586
|
"statusCode": 200,
|
|
1413
1587
|
"example": {
|
|
1414
|
-
"status":
|
|
1415
|
-
"response_status_id":
|
|
1588
|
+
"status": 342,
|
|
1589
|
+
"response_status_id": 1,
|
|
1416
1590
|
"message": "Recipient already registered",
|
|
1417
|
-
"response_type_id":
|
|
1591
|
+
"response_type_id": -1,
|
|
1418
1592
|
"data": {}
|
|
1419
1593
|
}
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
"scenario": "Customer does not exist in system",
|
|
1597
|
+
"statusCode": 200,
|
|
1598
|
+
"example": {
|
|
1599
|
+
"status": 463,
|
|
1600
|
+
"response_status_id": 1,
|
|
1601
|
+
"message": "customer_id does not exist in system",
|
|
1602
|
+
"response_type_id": -1,
|
|
1603
|
+
"invalid_params": {
|
|
1604
|
+
"customer_id": "Customer does not exist in System"
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1420
1607
|
}
|
|
1421
1608
|
],
|
|
1422
|
-
"responseTypes": [
|
|
1609
|
+
"responseTypes": [
|
|
1610
|
+
{
|
|
1611
|
+
"id": 43,
|
|
1612
|
+
"meaning": "Recipient added — proceed to Send Transaction OTP",
|
|
1613
|
+
"next": "dmt-send-otp"
|
|
1614
|
+
}
|
|
1615
|
+
]
|
|
1423
1616
|
},
|
|
1424
1617
|
{
|
|
1425
1618
|
"slug": "dmt-send-otp",
|
|
@@ -1547,15 +1740,9 @@
|
|
|
1547
1740
|
{
|
|
1548
1741
|
"name": "otp_ref_id",
|
|
1549
1742
|
"type": "string",
|
|
1550
|
-
"description": "Reference ID for the OTP sent. Must be passed to
|
|
1743
|
+
"description": "Reference ID for the OTP sent. Must be passed to Execute Transaction along with the customer-entered OTP.",
|
|
1551
1744
|
"imp": true,
|
|
1552
|
-
"example": "
|
|
1553
|
-
},
|
|
1554
|
-
{
|
|
1555
|
-
"name": "mobile",
|
|
1556
|
-
"type": "string",
|
|
1557
|
-
"description": "Masked mobile number to which the OTP was sent (for display to agent/customer).",
|
|
1558
|
-
"example": "XXXXXX6789"
|
|
1745
|
+
"example": "666902416"
|
|
1559
1746
|
}
|
|
1560
1747
|
]
|
|
1561
1748
|
}
|
|
@@ -1563,11 +1750,10 @@
|
|
|
1563
1750
|
"sampleSuccessResponse": {
|
|
1564
1751
|
"status": 0,
|
|
1565
1752
|
"response_status_id": 0,
|
|
1566
|
-
"message": "OTP
|
|
1567
|
-
"response_type_id":
|
|
1753
|
+
"message": "Send OTP",
|
|
1754
|
+
"response_type_id": 2133,
|
|
1568
1755
|
"data": {
|
|
1569
|
-
"otp_ref_id": "
|
|
1570
|
-
"mobile": "XXXXXX6789"
|
|
1756
|
+
"otp_ref_id": "666902416"
|
|
1571
1757
|
}
|
|
1572
1758
|
},
|
|
1573
1759
|
"errorScenarios": [
|
|
@@ -1575,15 +1761,45 @@
|
|
|
1575
1761
|
"scenario": "Sender monthly limit exhausted",
|
|
1576
1762
|
"statusCode": 200,
|
|
1577
1763
|
"example": {
|
|
1578
|
-
"status":
|
|
1579
|
-
"
|
|
1764
|
+
"status": 36,
|
|
1765
|
+
"response_type_id": 36,
|
|
1766
|
+
"response_status_id": 1,
|
|
1580
1767
|
"message": "Sender/beneficiary monthly limit exhausted",
|
|
1581
|
-
"response_type_id": 1388,
|
|
1582
1768
|
"data": {}
|
|
1583
1769
|
}
|
|
1770
|
+
},
|
|
1771
|
+
{
|
|
1772
|
+
"scenario": "Beneficiary monthly limit exhausted",
|
|
1773
|
+
"statusCode": 200,
|
|
1774
|
+
"example": {
|
|
1775
|
+
"status": 945,
|
|
1776
|
+
"response_type_id": 945,
|
|
1777
|
+
"response_status_id": 1,
|
|
1778
|
+
"message": "Beneficiary monthly limit exhausted",
|
|
1779
|
+
"data": {}
|
|
1780
|
+
}
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
"scenario": "Customer does not exist in system",
|
|
1784
|
+
"statusCode": 200,
|
|
1785
|
+
"example": {
|
|
1786
|
+
"status": 463,
|
|
1787
|
+
"response_status_id": 1,
|
|
1788
|
+
"message": "customer_id does not exist in system",
|
|
1789
|
+
"response_type_id": -1,
|
|
1790
|
+
"invalid_params": {
|
|
1791
|
+
"customer_id": "Customer does not exist in System"
|
|
1792
|
+
}
|
|
1793
|
+
}
|
|
1584
1794
|
}
|
|
1585
1795
|
],
|
|
1586
|
-
"responseTypes": [
|
|
1796
|
+
"responseTypes": [
|
|
1797
|
+
{
|
|
1798
|
+
"id": 2133,
|
|
1799
|
+
"meaning": "Transaction OTP sent — proceed to Execute Transaction",
|
|
1800
|
+
"next": "dmt-initiate-transfer"
|
|
1801
|
+
}
|
|
1802
|
+
]
|
|
1587
1803
|
},
|
|
1588
1804
|
{
|
|
1589
1805
|
"slug": "dmt-initiate-transfer",
|
|
@@ -1595,7 +1811,7 @@
|
|
|
1595
1811
|
"summary": "Execute a DMT-Fino money transfer after OTP verification.",
|
|
1596
1812
|
"category": "bc",
|
|
1597
1813
|
"relevance": "M",
|
|
1598
|
-
"description": "The final and only financial step in the DMT flow. Debits the agent's wallet and initiates an IMPS transfer to the registered recipient's bank account. Requires the
|
|
1814
|
+
"description": "The final and only financial step in the DMT flow. Debits the agent's wallet and initiates an IMPS transfer to the registered recipient's bank account after OTP validation. Requires the otp and otp_ref_id from Send Transaction OTP plus a unique client_ref_id per attempt for idempotency and reconciliation. The response returns tid (Eko transaction ID) and bank_ref_num (the IMPS RRN/UTR). Use a fresh otp_ref_id and OTP for each attempt — a consumed OTP is rejected — and always persist tid, bank_ref_num, and your client_ref_id to reconcile before retrying.",
|
|
1599
1815
|
"bestFor": "Executing the actual money transfer — the only money-debit step in the DMT flow.",
|
|
1600
1816
|
"docsUrl": "https://eps.eko.in/docs/dmt-initiate-transfer",
|
|
1601
1817
|
"financial": true,
|
|
@@ -1639,28 +1855,20 @@
|
|
|
1639
1855
|
"example": "9962981729",
|
|
1640
1856
|
"in": "body"
|
|
1641
1857
|
},
|
|
1642
|
-
{
|
|
1643
|
-
"name": "client_ref_id",
|
|
1644
|
-
"type": "string",
|
|
1645
|
-
"required": false,
|
|
1646
|
-
"description": "Unique reference ID per API call, generated by your system (max 20 characters).",
|
|
1647
|
-
"example": "2026010100123456789",
|
|
1648
|
-
"in": "body"
|
|
1649
|
-
},
|
|
1650
1858
|
{
|
|
1651
1859
|
"name": "recipient_id",
|
|
1652
1860
|
"type": "number",
|
|
1653
1861
|
"required": true,
|
|
1654
1862
|
"description": "Unique recipient ID from Add Recipient or Get Recipients.",
|
|
1655
|
-
"example":
|
|
1863
|
+
"example": 117015428,
|
|
1656
1864
|
"in": "body"
|
|
1657
1865
|
},
|
|
1658
1866
|
{
|
|
1659
1867
|
"name": "amount",
|
|
1660
1868
|
"type": "number",
|
|
1661
1869
|
"required": true,
|
|
1662
|
-
"description": "Transfer amount in INR (must match the amount sent to Send OTP).",
|
|
1663
|
-
"example":
|
|
1870
|
+
"description": "Transfer amount in INR (must match the amount sent to Send Transaction OTP).",
|
|
1871
|
+
"example": 100,
|
|
1664
1872
|
"in": "body"
|
|
1665
1873
|
},
|
|
1666
1874
|
{
|
|
@@ -1668,7 +1876,7 @@
|
|
|
1668
1876
|
"type": "string",
|
|
1669
1877
|
"required": true,
|
|
1670
1878
|
"description": "Sender's 10-digit mobile number.",
|
|
1671
|
-
"example": "
|
|
1879
|
+
"example": "9155927131",
|
|
1672
1880
|
"in": "body"
|
|
1673
1881
|
},
|
|
1674
1882
|
{
|
|
@@ -1676,7 +1884,7 @@
|
|
|
1676
1884
|
"type": "string",
|
|
1677
1885
|
"required": true,
|
|
1678
1886
|
"description": "OTP entered by the customer, received on their registered mobile.",
|
|
1679
|
-
"example": "
|
|
1887
|
+
"example": "4702",
|
|
1680
1888
|
"in": "body"
|
|
1681
1889
|
},
|
|
1682
1890
|
{
|
|
@@ -1684,72 +1892,26 @@
|
|
|
1684
1892
|
"type": "string",
|
|
1685
1893
|
"required": true,
|
|
1686
1894
|
"description": "OTP reference ID from the Send Transaction OTP response.",
|
|
1687
|
-
"example": "
|
|
1688
|
-
"in": "body"
|
|
1689
|
-
},
|
|
1690
|
-
{
|
|
1691
|
-
"name": "latlong",
|
|
1692
|
-
"type": "string",
|
|
1693
|
-
"required": true,
|
|
1694
|
-
"description": "GPS coordinates of the agent/merchant's device at the time of transaction (required for regulatory compliance).",
|
|
1695
|
-
"example": "28.6139,77.2090",
|
|
1696
|
-
"in": "body"
|
|
1697
|
-
},
|
|
1698
|
-
{
|
|
1699
|
-
"name": "state",
|
|
1700
|
-
"type": "string",
|
|
1701
|
-
"required": true,
|
|
1702
|
-
"description": "Fixed value: \"1\".",
|
|
1703
|
-
"example": "1",
|
|
1895
|
+
"example": "667007109",
|
|
1704
1896
|
"in": "body"
|
|
1705
1897
|
},
|
|
1706
1898
|
{
|
|
1707
|
-
"name": "
|
|
1899
|
+
"name": "client_ref_id",
|
|
1708
1900
|
"type": "string",
|
|
1709
1901
|
"required": true,
|
|
1710
|
-
"description": "
|
|
1711
|
-
"example": "
|
|
1712
|
-
"in": "body"
|
|
1713
|
-
},
|
|
1714
|
-
{
|
|
1715
|
-
"name": "channel",
|
|
1716
|
-
"type": "number",
|
|
1717
|
-
"required": false,
|
|
1718
|
-
"description": "Transfer channel. Fixed value: 2 (IMPS). Defaults to 2.",
|
|
1719
|
-
"example": 2,
|
|
1720
|
-
"in": "body"
|
|
1721
|
-
},
|
|
1722
|
-
{
|
|
1723
|
-
"name": "currency",
|
|
1724
|
-
"type": "string",
|
|
1725
|
-
"required": false,
|
|
1726
|
-
"description": "Currency code. Defaults to \"INR\".",
|
|
1727
|
-
"example": "INR",
|
|
1728
|
-
"in": "body"
|
|
1729
|
-
},
|
|
1730
|
-
{
|
|
1731
|
-
"name": "timestamp",
|
|
1732
|
-
"type": "string",
|
|
1733
|
-
"required": false,
|
|
1734
|
-
"description": "ISO 8601 request timestamp.",
|
|
1735
|
-
"example": "2024-01-01T10:30:00Z",
|
|
1902
|
+
"description": "Unique partner reference for this transaction (idempotency & reconciliation). Use a fresh value per attempt.",
|
|
1903
|
+
"example": "<unique_client_ref_id>",
|
|
1736
1904
|
"in": "body"
|
|
1737
1905
|
}
|
|
1738
1906
|
],
|
|
1739
1907
|
"sampleRequest": {
|
|
1740
1908
|
"initiator_id": "9962981729",
|
|
1741
|
-
"
|
|
1742
|
-
"
|
|
1743
|
-
"
|
|
1744
|
-
"
|
|
1745
|
-
"
|
|
1746
|
-
"
|
|
1747
|
-
"latlong": "28.6139,77.2090",
|
|
1748
|
-
"state": "1",
|
|
1749
|
-
"recipient_id_type": "1",
|
|
1750
|
-
"channel": 2,
|
|
1751
|
-
"currency": "INR",
|
|
1752
|
-
"timestamp": "2024-01-01T10:30:00Z"
|
|
1909
|
+
"recipient_id": 117015428,
|
|
1910
|
+
"amount": 100,
|
|
1911
|
+
"customer_id": "9155927131",
|
|
1912
|
+
"otp": "4702",
|
|
1913
|
+
"otp_ref_id": "667007109",
|
|
1914
|
+
"client_ref_id": "<unique_client_ref_id>"
|
|
1753
1915
|
},
|
|
1754
1916
|
"responseFields": [
|
|
1755
1917
|
{
|
|
@@ -1793,157 +1955,248 @@
|
|
|
1793
1955
|
"type": "object",
|
|
1794
1956
|
"description": "API-specific response payload.",
|
|
1795
1957
|
"children": [
|
|
1958
|
+
{
|
|
1959
|
+
"name": "tx_status",
|
|
1960
|
+
"type": "string",
|
|
1961
|
+
"description": "Transaction state within the data block: 0=Success, 1=Fail, 2=Awaited.",
|
|
1962
|
+
"imp": true,
|
|
1963
|
+
"example": "0"
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
"name": "txstatus_desc",
|
|
1967
|
+
"type": "string",
|
|
1968
|
+
"description": "Human-readable transaction status.",
|
|
1969
|
+
"example": "Success"
|
|
1970
|
+
},
|
|
1796
1971
|
{
|
|
1797
1972
|
"name": "tid",
|
|
1798
1973
|
"type": "string",
|
|
1799
|
-
"description": "Eko's internal transaction ID.
|
|
1974
|
+
"description": "Eko's internal transaction ID. Store for reconciliation and support queries.",
|
|
1800
1975
|
"imp": true,
|
|
1801
|
-
"example": "
|
|
1976
|
+
"example": "3570311831"
|
|
1802
1977
|
},
|
|
1803
1978
|
{
|
|
1804
|
-
"name": "
|
|
1979
|
+
"name": "bank_ref_num",
|
|
1805
1980
|
"type": "string",
|
|
1806
|
-
"description": "
|
|
1981
|
+
"description": "Bank reference number (RRN / UTR) for the IMPS transaction.",
|
|
1807
1982
|
"imp": true,
|
|
1808
|
-
"example": "
|
|
1983
|
+
"example": "620415011744"
|
|
1809
1984
|
},
|
|
1810
1985
|
{
|
|
1811
1986
|
"name": "amount",
|
|
1812
|
-
"type": "
|
|
1813
|
-
"description": "Amount transferred
|
|
1987
|
+
"type": "string",
|
|
1988
|
+
"description": "Amount transferred (INR).",
|
|
1814
1989
|
"imp": true,
|
|
1815
|
-
"example":
|
|
1990
|
+
"example": "100.00"
|
|
1816
1991
|
},
|
|
1817
1992
|
{
|
|
1818
|
-
"name": "
|
|
1993
|
+
"name": "fee",
|
|
1819
1994
|
"type": "string",
|
|
1820
|
-
"description": "
|
|
1821
|
-
"
|
|
1822
|
-
"example": "Sunil Sharma"
|
|
1995
|
+
"description": "Fee charged for the transfer (INR).",
|
|
1996
|
+
"example": "10.0"
|
|
1823
1997
|
},
|
|
1824
1998
|
{
|
|
1825
|
-
"name": "
|
|
1999
|
+
"name": "collectable_amount",
|
|
1826
2000
|
"type": "string",
|
|
1827
|
-
"description": "
|
|
1828
|
-
"example": "
|
|
2001
|
+
"description": "Total collectable from the sender (amount + fee).",
|
|
2002
|
+
"example": "110.0"
|
|
1829
2003
|
},
|
|
1830
2004
|
{
|
|
1831
|
-
"name": "
|
|
2005
|
+
"name": "service_tax",
|
|
1832
2006
|
"type": "string",
|
|
1833
|
-
"description": "
|
|
1834
|
-
"example": "
|
|
2007
|
+
"description": "Service tax component on the fee (INR).",
|
|
2008
|
+
"example": "1.53"
|
|
1835
2009
|
},
|
|
1836
2010
|
{
|
|
1837
|
-
"name": "
|
|
1838
|
-
"type": "
|
|
1839
|
-
"description": "
|
|
1840
|
-
"example":
|
|
2011
|
+
"name": "tds",
|
|
2012
|
+
"type": "string",
|
|
2013
|
+
"description": "Tax deducted at source on the agent's commission (INR).",
|
|
2014
|
+
"example": "0.01"
|
|
1841
2015
|
},
|
|
1842
2016
|
{
|
|
1843
2017
|
"name": "commission",
|
|
1844
|
-
"type": "
|
|
1845
|
-
"description": "Commission earned by the agent on this transaction (
|
|
1846
|
-
"example":
|
|
2018
|
+
"type": "string",
|
|
2019
|
+
"description": "Commission earned by the agent on this transaction (INR).",
|
|
2020
|
+
"example": "0.47"
|
|
1847
2021
|
},
|
|
1848
2022
|
{
|
|
1849
|
-
"name": "
|
|
2023
|
+
"name": "sender_name",
|
|
2024
|
+
"type": "string",
|
|
2025
|
+
"description": "Name of the sender.",
|
|
2026
|
+
"example": "Rahul"
|
|
2027
|
+
},
|
|
2028
|
+
{
|
|
2029
|
+
"name": "recipient_name",
|
|
2030
|
+
"type": "string",
|
|
2031
|
+
"description": "Name of the beneficiary credited.",
|
|
2032
|
+
"imp": true,
|
|
2033
|
+
"example": "Master YASHWANT BASNETT"
|
|
2034
|
+
},
|
|
2035
|
+
{
|
|
2036
|
+
"name": "recipient_id",
|
|
1850
2037
|
"type": "number",
|
|
1851
|
-
"description": "
|
|
1852
|
-
"example":
|
|
2038
|
+
"description": "Recipient identifier credited.",
|
|
2039
|
+
"example": 117015428
|
|
1853
2040
|
},
|
|
1854
2041
|
{
|
|
1855
|
-
"name": "
|
|
2042
|
+
"name": "bank",
|
|
1856
2043
|
"type": "string",
|
|
1857
|
-
"description": "
|
|
1858
|
-
"example": "
|
|
2044
|
+
"description": "Beneficiary bank name.",
|
|
2045
|
+
"example": "State Bank of India"
|
|
1859
2046
|
},
|
|
1860
2047
|
{
|
|
1861
|
-
"name": "
|
|
2048
|
+
"name": "account",
|
|
1862
2049
|
"type": "string",
|
|
1863
|
-
"description": "
|
|
1864
|
-
"example": "
|
|
1865
|
-
}
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
2050
|
+
"description": "Beneficiary account number credited.",
|
|
2051
|
+
"example": "38759149196"
|
|
2052
|
+
},
|
|
2053
|
+
{
|
|
2054
|
+
"name": "channel_desc",
|
|
2055
|
+
"type": "string",
|
|
2056
|
+
"description": "Settlement channel used (e.g. IMPS).",
|
|
2057
|
+
"example": "IMPS"
|
|
2058
|
+
},
|
|
2059
|
+
{
|
|
2060
|
+
"name": "balance",
|
|
2061
|
+
"type": "string",
|
|
2062
|
+
"description": "Agent wallet balance after the transaction (INR).",
|
|
2063
|
+
"imp": true,
|
|
2064
|
+
"example": "10131.18"
|
|
2065
|
+
},
|
|
2066
|
+
{
|
|
2067
|
+
"name": "client_ref_id",
|
|
2068
|
+
"type": "string",
|
|
2069
|
+
"description": "Echo of the partner reference sent in the request.",
|
|
2070
|
+
"example": "<unique_client_ref_id>"
|
|
2071
|
+
},
|
|
2072
|
+
{
|
|
2073
|
+
"name": "currency",
|
|
2074
|
+
"type": "string",
|
|
2075
|
+
"description": "Currency code.",
|
|
2076
|
+
"example": "INR"
|
|
2077
|
+
},
|
|
2078
|
+
{
|
|
2079
|
+
"name": "timestamp",
|
|
2080
|
+
"type": "string",
|
|
2081
|
+
"description": "Server-side timestamp of the transaction.",
|
|
2082
|
+
"example": "2026-07-23T09:46:35.396Z"
|
|
2083
|
+
}
|
|
2084
|
+
]
|
|
2085
|
+
}
|
|
2086
|
+
],
|
|
2087
|
+
"sampleSuccessResponse": {
|
|
2088
|
+
"status": 0,
|
|
2089
|
+
"response_status_id": 0,
|
|
2090
|
+
"message": "Transaction successful",
|
|
2091
|
+
"response_type_id": 325,
|
|
2092
|
+
"data": {
|
|
1879
2093
|
"tx_status": "0",
|
|
1880
|
-
"
|
|
1881
|
-
"
|
|
1882
|
-
"
|
|
1883
|
-
"fee":
|
|
1884
|
-
"
|
|
1885
|
-
"
|
|
1886
|
-
"
|
|
1887
|
-
"
|
|
2094
|
+
"txstatus_desc": "Success",
|
|
2095
|
+
"tid": "3570311831",
|
|
2096
|
+
"amount": "100.00",
|
|
2097
|
+
"fee": "10.0",
|
|
2098
|
+
"collectable_amount": "110.0",
|
|
2099
|
+
"service_tax": "1.53",
|
|
2100
|
+
"tds": "0.01",
|
|
2101
|
+
"commission": "0.47",
|
|
2102
|
+
"sender_name": "Rahul",
|
|
2103
|
+
"recipient_name": "Master YASHWANT BASNETT",
|
|
2104
|
+
"recipient_id": 117015428,
|
|
2105
|
+
"bank": "State Bank of India",
|
|
2106
|
+
"account": "38759149196",
|
|
2107
|
+
"channel_desc": "IMPS",
|
|
2108
|
+
"bank_ref_num": "620415011744",
|
|
2109
|
+
"balance": "10131.18",
|
|
2110
|
+
"client_ref_id": "<unique_client_ref_id>",
|
|
2111
|
+
"currency": "INR",
|
|
2112
|
+
"timestamp": "2026-07-23T09:46:35.396Z"
|
|
1888
2113
|
}
|
|
1889
2114
|
},
|
|
1890
2115
|
"errorScenarios": [
|
|
1891
2116
|
{
|
|
1892
|
-
"scenario": "
|
|
2117
|
+
"scenario": "Transaction declined — OTP already consumed",
|
|
1893
2118
|
"statusCode": 200,
|
|
1894
2119
|
"example": {
|
|
1895
|
-
"status":
|
|
1896
|
-
"response_status_id":
|
|
1897
|
-
"message": "
|
|
1898
|
-
"
|
|
1899
|
-
"
|
|
1900
|
-
|
|
2120
|
+
"status": 55,
|
|
2121
|
+
"response_status_id": 1,
|
|
2122
|
+
"message": "Transaction declined. Please try after sometime.",
|
|
2123
|
+
"response_type_id": 55,
|
|
2124
|
+
"data": {
|
|
2125
|
+
"tx_status": "1",
|
|
2126
|
+
"txstatus_desc": "Failed",
|
|
2127
|
+
"reason": "OTP already Consumed",
|
|
2128
|
+
"amount": "100.00",
|
|
2129
|
+
"tid": "3570311840",
|
|
2130
|
+
"client_ref_id": "<unique_client_ref_id>",
|
|
2131
|
+
"balance": "10021.64"
|
|
2132
|
+
}
|
|
1901
2133
|
}
|
|
1902
2134
|
},
|
|
1903
2135
|
{
|
|
1904
|
-
"scenario": "Transaction
|
|
2136
|
+
"scenario": "Transaction declined — insufficient balance in agent wallet",
|
|
1905
2137
|
"statusCode": 200,
|
|
1906
2138
|
"example": {
|
|
1907
|
-
"status":
|
|
1908
|
-
"response_status_id":
|
|
1909
|
-
"message": "Transaction
|
|
1910
|
-
"
|
|
1911
|
-
"txstatus_desc": "Awaited",
|
|
2139
|
+
"status": 55,
|
|
2140
|
+
"response_status_id": 1,
|
|
2141
|
+
"message": "Transaction declined. Please try after sometime.",
|
|
2142
|
+
"response_type_id": 55,
|
|
1912
2143
|
"data": {
|
|
1913
|
-
"
|
|
1914
|
-
"
|
|
2144
|
+
"tx_status": "1",
|
|
2145
|
+
"txstatus_desc": "Failed",
|
|
2146
|
+
"reason": "Insufficient balance"
|
|
1915
2147
|
}
|
|
1916
2148
|
}
|
|
1917
2149
|
},
|
|
1918
2150
|
{
|
|
1919
|
-
"scenario": "
|
|
2151
|
+
"scenario": "Transaction declined — wrong OTP entered",
|
|
1920
2152
|
"statusCode": 200,
|
|
1921
2153
|
"example": {
|
|
1922
|
-
"status":
|
|
1923
|
-
"response_status_id":
|
|
1924
|
-
"message": "
|
|
1925
|
-
"
|
|
1926
|
-
"
|
|
1927
|
-
|
|
2154
|
+
"status": 55,
|
|
2155
|
+
"response_status_id": 1,
|
|
2156
|
+
"message": "Transaction declined. Please try after sometime.",
|
|
2157
|
+
"response_type_id": 55,
|
|
2158
|
+
"data": {
|
|
2159
|
+
"tx_status": "1",
|
|
2160
|
+
"txstatus_desc": "Failed",
|
|
2161
|
+
"reason": "Wrong OTP"
|
|
2162
|
+
}
|
|
1928
2163
|
}
|
|
1929
2164
|
},
|
|
1930
2165
|
{
|
|
1931
|
-
"scenario": "
|
|
2166
|
+
"scenario": "Transaction declined — sender monthly limit exhausted",
|
|
1932
2167
|
"statusCode": 200,
|
|
1933
2168
|
"example": {
|
|
1934
|
-
"status":
|
|
1935
|
-
"response_status_id":
|
|
1936
|
-
"message": "
|
|
1937
|
-
"
|
|
1938
|
-
"
|
|
1939
|
-
|
|
2169
|
+
"status": 55,
|
|
2170
|
+
"response_status_id": 1,
|
|
2171
|
+
"message": "Transaction declined. Please try after sometime.",
|
|
2172
|
+
"response_type_id": 55,
|
|
2173
|
+
"data": {
|
|
2174
|
+
"tx_status": "1",
|
|
2175
|
+
"txstatus_desc": "Failed",
|
|
2176
|
+
"reason": "Sender/beneficiary monthly limit exhausted"
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2179
|
+
},
|
|
2180
|
+
{
|
|
2181
|
+
"scenario": "Transaction awaited (non-final) — reconcile by tid before retrying",
|
|
2182
|
+
"statusCode": 200,
|
|
2183
|
+
"example": {
|
|
2184
|
+
"status": 0,
|
|
2185
|
+
"response_status_id": 0,
|
|
2186
|
+
"message": "Transaction in progress",
|
|
2187
|
+
"data": {
|
|
2188
|
+
"tx_status": "2",
|
|
2189
|
+
"txstatus_desc": "Awaited",
|
|
2190
|
+
"tid": "3570311831",
|
|
2191
|
+
"amount": "100.00"
|
|
2192
|
+
}
|
|
1940
2193
|
}
|
|
1941
2194
|
}
|
|
1942
2195
|
],
|
|
1943
2196
|
"responseTypes": []
|
|
1944
2197
|
},
|
|
1945
2198
|
{
|
|
1946
|
-
"slug": "aeps-
|
|
2199
|
+
"slug": "activate-aeps-fingpay",
|
|
1947
2200
|
"productId": "aeps",
|
|
1948
2201
|
"productName": "AePS Cashout",
|
|
1949
2202
|
"name": "Activate AePS Fingpay for Agent",
|
|
@@ -1954,7 +2207,7 @@
|
|
|
1954
2207
|
"relevance": "M",
|
|
1955
2208
|
"description": "This API enables an agent (identified by their `user_code`) to use the AePS Fingpay service. It accepts the agent's biometric device model, serial number, address proofs, and KYC documents (PAN card, Aadhaar front and back) as a multipart form submission. After submission, the activation enters a 'pending' state and is approved within 2–3 business days. Only activated agents can perform AePS transactions. File uploads must be JPEG/JPG/PDF format, each under 1 MB; PNG is not accepted.\n\n> [!NOTE]\n> This API must be called after onboarding your agent using the [**Onboard User API**](/docs/onboard-user).\n\n> [!WARNING]\n> The approval may take 1-2 business days.",
|
|
1956
2209
|
"bestFor": "Platforms onboarding BC agents and CSPs to offer AePS services for the first time",
|
|
1957
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-
|
|
2210
|
+
"docsUrl": "https://eps.eko.in/docs/activate-aeps-fingpay",
|
|
1958
2211
|
"headers": [
|
|
1959
2212
|
{
|
|
1960
2213
|
"name": "developer_key",
|
|
@@ -2383,7 +2636,7 @@
|
|
|
2383
2636
|
{
|
|
2384
2637
|
"id": 2110,
|
|
2385
2638
|
"meaning": "Shop-type list returned successfully",
|
|
2386
|
-
"next": "aeps-
|
|
2639
|
+
"next": "activate-aeps-fingpay"
|
|
2387
2640
|
}
|
|
2388
2641
|
]
|
|
2389
2642
|
},
|
|
@@ -2557,12 +2810,12 @@
|
|
|
2557
2810
|
{
|
|
2558
2811
|
"id": 2127,
|
|
2559
2812
|
"meaning": "State list returned successfully",
|
|
2560
|
-
"next": "aeps-
|
|
2813
|
+
"next": "activate-aeps-fingpay"
|
|
2561
2814
|
}
|
|
2562
2815
|
]
|
|
2563
2816
|
},
|
|
2564
2817
|
{
|
|
2565
|
-
"slug": "aeps-send-otp-kyc",
|
|
2818
|
+
"slug": "aeps-fingpay-send-otp-kyc",
|
|
2566
2819
|
"productId": "aeps",
|
|
2567
2820
|
"productName": "AePS Cashout",
|
|
2568
2821
|
"name": "Send OTP (eKYC)",
|
|
@@ -2573,7 +2826,7 @@
|
|
|
2573
2826
|
"relevance": "M",
|
|
2574
2827
|
"description": "First-time KYC follows three steps in order: `Send OTP` → `Verify OTP` → `Biometric`. On subsequent days, use the Daily KYC (biometric-only) endpoint.\n\nThis is the first step in the one-time AePS Fingpay eKYC flow. The OTP is delivered to the number passed in `customer_id`. The eKYC flow — Send OTP → Verify OTP → Biometric — must be completed once per agent before they can perform any AePS transactions. This step is a prerequisite; do not confuse it with the Daily KYC which is required on each calendar day.",
|
|
2575
2828
|
"bestFor": "Initial one-time KYC setup for newly activated AePS Fingpay agents",
|
|
2576
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-send-otp-kyc",
|
|
2829
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-send-otp-kyc",
|
|
2577
2830
|
"headers": [
|
|
2578
2831
|
{
|
|
2579
2832
|
"name": "developer_key",
|
|
@@ -2749,12 +3002,12 @@
|
|
|
2749
3002
|
{
|
|
2750
3003
|
"id": 1600,
|
|
2751
3004
|
"meaning": "OTP request has been sent",
|
|
2752
|
-
"next": "aeps-verify-otp-kyc"
|
|
3005
|
+
"next": "aeps-fingpay-verify-otp-kyc"
|
|
2753
3006
|
}
|
|
2754
3007
|
]
|
|
2755
3008
|
},
|
|
2756
3009
|
{
|
|
2757
|
-
"slug": "aeps-verify-otp-kyc",
|
|
3010
|
+
"slug": "aeps-fingpay-verify-otp-kyc",
|
|
2758
3011
|
"productId": "aeps",
|
|
2759
3012
|
"productName": "AePS Cashout",
|
|
2760
3013
|
"name": "Verify OTP (eKYC)",
|
|
@@ -2765,7 +3018,7 @@
|
|
|
2765
3018
|
"relevance": "M",
|
|
2766
3019
|
"description": "The second step of the one-time AePS Fingpay eKYC flow (Send OTP → Verify OTP → Biometric). Submits the OTP the agent received, together with the `otp_ref_id` and `reference_tid` returned by the Send OTP API, to validate the agent's identity before biometric capture. Aadhaar must be RSA-encrypted and Base64-encoded.",
|
|
2767
3020
|
"bestFor": "Completing OTP validation during initial one-time agent eKYC",
|
|
2768
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-verify-otp-kyc",
|
|
3021
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-verify-otp-kyc",
|
|
2769
3022
|
"headers": [
|
|
2770
3023
|
{
|
|
2771
3024
|
"name": "developer_key",
|
|
@@ -2959,12 +3212,12 @@
|
|
|
2959
3212
|
{
|
|
2960
3213
|
"id": 1604,
|
|
2961
3214
|
"meaning": "Validation successful",
|
|
2962
|
-
"next": "aeps-biometric-ekyc"
|
|
3215
|
+
"next": "aeps-fingpay-biometric-ekyc"
|
|
2963
3216
|
}
|
|
2964
3217
|
]
|
|
2965
3218
|
},
|
|
2966
3219
|
{
|
|
2967
|
-
"slug": "aeps-biometric-ekyc",
|
|
3220
|
+
"slug": "aeps-fingpay-biometric-ekyc",
|
|
2968
3221
|
"productId": "aeps",
|
|
2969
3222
|
"productName": "AePS Cashout",
|
|
2970
3223
|
"name": "Biometric eKYC",
|
|
@@ -2973,9 +3226,9 @@
|
|
|
2973
3226
|
"summary": "Complete one-time AePS Fingpay eKYC by submitting the agent's Aadhaar and live biometric fingerprint capture.",
|
|
2974
3227
|
"category": "bc",
|
|
2975
3228
|
"relevance": "M",
|
|
2976
|
-
"description": "The final step in the one-time AePS Fingpay eKYC flow, called after OTP verification. Submits the agent's RSA-encrypted Aadhaar and live biometric PID to UIDAI; on success the agent is eligible for AePS transactions.\n\nIf you generate the PID block with your own code rather than the RD service default, set `wadh=E0jzJ/P8UopUHAieZn8CKqS4WPMi5ZSYXgfnlfkWjrc=` alongside `fCount`, `fType` and the other attributes.",
|
|
3229
|
+
"description": "The final step in the one-time AePS Fingpay eKYC flow, called after OTP verification. Submits the agent's RSA-encrypted Aadhaar and live biometric PID to UIDAI; on success the agent is eligible for AePS transactions.\n\nIf you generate the PID block with your own code rather than the RD service default, set `wadh=E0jzJ/P8UopUHAieZn8CKqS4WPMi5ZSYXgfnlfkWjrc=` alongside `fCount`, `fType` and the other attributes.\n\nTo capture the `piddata` PID block with an RDService-compliant fingerprint scanner, see the [Aadhaar Biometric Authentication guide](/docs/aadhaar-biometric-rdservice).",
|
|
2977
3230
|
"bestFor": "Completing the mandatory one-time biometric identity verification for AePS Fingpay agents",
|
|
2978
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-biometric-ekyc",
|
|
3231
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-biometric-ekyc",
|
|
2979
3232
|
"headers": [
|
|
2980
3233
|
{
|
|
2981
3234
|
"name": "developer_key",
|
|
@@ -3170,12 +3423,12 @@
|
|
|
3170
3423
|
{
|
|
3171
3424
|
"id": 1605,
|
|
3172
3425
|
"meaning": "eKYC successful — agent may now complete Daily KYC",
|
|
3173
|
-
"next": "aeps-daily-auth"
|
|
3426
|
+
"next": "aeps-fingpay-daily-auth"
|
|
3174
3427
|
}
|
|
3175
3428
|
]
|
|
3176
3429
|
},
|
|
3177
3430
|
{
|
|
3178
|
-
"slug": "aeps-daily-auth",
|
|
3431
|
+
"slug": "aeps-fingpay-daily-auth",
|
|
3179
3432
|
"productId": "aeps",
|
|
3180
3433
|
"productName": "AePS Cashout",
|
|
3181
3434
|
"name": "Daily KYC",
|
|
@@ -3184,9 +3437,9 @@
|
|
|
3184
3437
|
"summary": "Perform the mandatory daily biometric re-verification that authorises an agent to carry out AePS transactions for the current calendar day.",
|
|
3185
3438
|
"category": "bc",
|
|
3186
3439
|
"relevance": "H",
|
|
3187
|
-
"description": "Biometric-only re-verification for the days after the one-time eKYC — no OTP step is required. AePS Fingpay requires every agent to re-authenticate themselves biometrically at the start of each working day, before their first transaction of the day.\n\nIf this fails with reason `Please complete bank eKYC to process the transaction.`, re-run the full first-time eKYC sequence — Send OTP → Verify OTP → Biometric — before retrying.",
|
|
3440
|
+
"description": "Biometric-only re-verification for the days after the one-time eKYC — no OTP step is required. AePS Fingpay requires every agent to re-authenticate themselves biometrically at the start of each working day, before their first transaction of the day.\n\nIf this fails with reason `Please complete bank eKYC to process the transaction.`, re-run the full first-time eKYC sequence — Send OTP → Verify OTP → Biometric — before retrying.\n\nTo capture the `piddata` PID block with an RDService-compliant fingerprint scanner, see the [Aadhaar Biometric Authentication guide](/docs/aadhaar-biometric-rdservice).",
|
|
3188
3441
|
"bestFor": "Agent-side automation to trigger the daily biometric KYC at session start before serving AePS customers",
|
|
3189
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-daily-auth",
|
|
3442
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-daily-auth",
|
|
3190
3443
|
"headers": [
|
|
3191
3444
|
{
|
|
3192
3445
|
"name": "developer_key",
|
|
@@ -3271,7 +3524,7 @@
|
|
|
3271
3524
|
"name": "piddata",
|
|
3272
3525
|
"type": "string",
|
|
3273
3526
|
"required": true,
|
|
3274
|
-
"description": "PID XML string from the UIDAI-certified biometric device (fType=2, Data type='X', mc in DeviceInfo). This represents the agent's own fingerprint, not the customer's. If you generate the PID block yourself,
|
|
3527
|
+
"description": "PID XML string from the UIDAI-certified biometric device (fType=2, Data type='X', mc in DeviceInfo). This represents the agent's own fingerprint, not the customer's. If you generate the PID block yourself, the value of `wadh` must be blank/empty for Daily KYC.",
|
|
3275
3528
|
"example": "<?xml version='1.0'?><PidData><Data type='X'>...</Data><DeviceInfo mc='...' /></PidData>",
|
|
3276
3529
|
"in": "body"
|
|
3277
3530
|
},
|
|
@@ -3395,12 +3648,12 @@
|
|
|
3395
3648
|
{
|
|
3396
3649
|
"id": 1714,
|
|
3397
3650
|
"meaning": "Daily KYC failed — if `data.reason` is 'Please complete bank eKYC to process the transaction.', re-run the full eKYC from Send OTP",
|
|
3398
|
-
"next": "aeps-send-otp-kyc"
|
|
3651
|
+
"next": "aeps-fingpay-send-otp-kyc"
|
|
3399
3652
|
}
|
|
3400
3653
|
]
|
|
3401
3654
|
},
|
|
3402
3655
|
{
|
|
3403
|
-
"slug": "aeps-cash-withdrawal",
|
|
3656
|
+
"slug": "aeps-fingpay-cash-withdrawal",
|
|
3404
3657
|
"productId": "aeps",
|
|
3405
3658
|
"productName": "AePS Cashout",
|
|
3406
3659
|
"name": "AePS Cash Withdrawal",
|
|
@@ -3409,9 +3662,9 @@
|
|
|
3409
3662
|
"summary": "Withdraw cash from any Aadhaar-linked bank account using biometric fingerprint authentication — no card or PIN required.",
|
|
3410
3663
|
"category": "bc",
|
|
3411
3664
|
"relevance": "H",
|
|
3412
|
-
"description": "Allows a customer to withdraw cash from their bank account at an agent/BC point by providing their Aadhaar number and a live fingerprint scan. The agent's biometric device captures a PID XML blob which is passed verbatim to this API. The customer's Aadhaar is RSA-encrypted before transmission. Requires the agent to have completed AePS Fingpay activation, the one-time eKYC (Send OTP → Verify OTP → Biometric), and the Daily KYC for the current day.",
|
|
3665
|
+
"description": "Allows a customer to withdraw cash from their bank account at an agent/BC point by providing their Aadhaar number and a live fingerprint scan. The agent's biometric device captures a PID XML blob which is passed verbatim to this API. The customer's Aadhaar is RSA-encrypted before transmission. Requires the agent to have completed AePS Fingpay activation, the one-time eKYC (Send OTP → Verify OTP → Biometric), and the Daily KYC for the current day.\n\nTo capture the `piddata` PID block with an RDService-compliant fingerprint scanner, see the [Aadhaar Biometric Authentication guide](/docs/aadhaar-biometric-rdservice).",
|
|
3413
3666
|
"bestFor": "BC agents, CSPs, and kirana-store banking points enabling cardless cash withdrawal for rural customers",
|
|
3414
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-cash-withdrawal",
|
|
3667
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-cash-withdrawal",
|
|
3415
3668
|
"financial": true,
|
|
3416
3669
|
"headers": [
|
|
3417
3670
|
{
|
|
@@ -3874,7 +4127,7 @@
|
|
|
3874
4127
|
]
|
|
3875
4128
|
},
|
|
3876
4129
|
{
|
|
3877
|
-
"slug": "aeps-balance-enquiry",
|
|
4130
|
+
"slug": "aeps-fingpay-balance-enquiry",
|
|
3878
4131
|
"productId": "aeps",
|
|
3879
4132
|
"productName": "AePS Cashout",
|
|
3880
4133
|
"name": "AePS Balance Enquiry",
|
|
@@ -3883,9 +4136,9 @@
|
|
|
3883
4136
|
"summary": "Check a customer's bank account balance using Aadhaar number and biometric fingerprint — no card or PIN required.",
|
|
3884
4137
|
"category": "bc",
|
|
3885
4138
|
"relevance": "L",
|
|
3886
|
-
"description": "Retrieves the real-time account balance from any Aadhaar-linked bank. Uses the dedicated `balance-enquiry` endpoint — the request shape matches Cash Withdrawal without the `amount` field. No money movement occurs and no debit takes place. The agent must have completed AePS Fingpay activation and the current-day daily authentication before calling this API.",
|
|
4139
|
+
"description": "Retrieves the real-time account balance from any Aadhaar-linked bank. Uses the dedicated `balance-enquiry` endpoint — the request shape matches Cash Withdrawal without the `amount` field. No money movement occurs and no debit takes place. The agent must have completed AePS Fingpay activation and the current-day daily authentication before calling this API.\n\nTo capture the `piddata` PID block with an RDService-compliant fingerprint scanner, see the [Aadhaar Biometric Authentication guide](/docs/aadhaar-biometric-rdservice).",
|
|
3887
4140
|
"bestFor": "Agent-assisted balance checks for rural customers without smartphone or internet access",
|
|
3888
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-balance-enquiry",
|
|
4141
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-balance-enquiry",
|
|
3889
4142
|
"financial": true,
|
|
3890
4143
|
"headers": [
|
|
3891
4144
|
{
|
|
@@ -4224,7 +4477,7 @@
|
|
|
4224
4477
|
]
|
|
4225
4478
|
},
|
|
4226
4479
|
{
|
|
4227
|
-
"slug": "aeps-mini-statement",
|
|
4480
|
+
"slug": "aeps-fingpay-mini-statement",
|
|
4228
4481
|
"productId": "aeps",
|
|
4229
4482
|
"productName": "AePS Cashout",
|
|
4230
4483
|
"name": "AePS Mini Statement",
|
|
@@ -4233,9 +4486,9 @@
|
|
|
4233
4486
|
"summary": "Retrieve the last few transactions from an Aadhaar-linked bank account via biometric authentication.",
|
|
4234
4487
|
"category": "bc",
|
|
4235
4488
|
"relevance": "L",
|
|
4236
|
-
"description": "Fetches a mini statement (typically the last 5–10 transactions) from a customer's bank account by authenticating through Aadhaar biometrics. Uses the dedicated `mini-statement` endpoint — the request shape matches Balance Enquiry (no `amount`). No money movement occurs. The response includes a list of recent debit/credit transactions with amounts and dates. Useful for customers who want to verify recent activity at an agent point without visiting a branch.",
|
|
4489
|
+
"description": "Fetches a mini statement (typically the last 5–10 transactions) from a customer's bank account by authenticating through Aadhaar biometrics. Uses the dedicated `mini-statement` endpoint — the request shape matches Balance Enquiry (no `amount`). No money movement occurs. The response includes a list of recent debit/credit transactions with amounts and dates. Useful for customers who want to verify recent activity at an agent point without visiting a branch.\n\nTo capture the `piddata` PID block with an RDService-compliant fingerprint scanner, see the [Aadhaar Biometric Authentication guide](/docs/aadhaar-biometric-rdservice).",
|
|
4237
4490
|
"bestFor": "BC agents providing passbook-equivalent transaction history to Aadhaar-linked account holders",
|
|
4238
|
-
"docsUrl": "https://eps.eko.in/docs/aeps-mini-statement",
|
|
4491
|
+
"docsUrl": "https://eps.eko.in/docs/aeps-fingpay-mini-statement",
|
|
4239
4492
|
"financial": true,
|
|
4240
4493
|
"headers": [
|
|
4241
4494
|
{
|
|
@@ -6523,7 +6776,7 @@
|
|
|
6523
6776
|
"summary": "Check the current status of a BBPS bill payment by Eko TID or your client reference ID.",
|
|
6524
6777
|
"category": "payment",
|
|
6525
6778
|
"relevance": "M",
|
|
6526
|
-
"description": "
|
|
6779
|
+
"description": "Get the current status of a transaction using either Eko's TID or your own\n`client_ref_id`. This is a generic inquiry endpoint — it works for all Eko\nfinancial transaction types (fund transfer, BBPS, AePS settlement, NEFT, and\nmore).\n\nThe transaction reference goes in the URL path. Pass an Eko **TID as-is**; to\nlook up by your **`client_ref_id`, prefix it** with `client_ref_id:`:\n- By TID — `/tools/reference/transaction/<TID>`\n- By client_ref_id — `/tools/reference/transaction/client_ref_id:<your client_ref_id>`\n\n> [!NOTE]\n> **Examples**\n>\n> To check the status of a transaction using TID `2886601782`, call\n> `/tools/reference/transaction/2886601782`.\n>\n> If you never received Eko's TID (say, due to a network timeout) but sent your\n> own unique reference `567890`, look it up with\n> `/tools/reference/transaction/client_ref_id:567890`.\n\n> [!WARNING]\n> **Transaction timeout**\n>\n> A transaction can time out for many reasons — a slow partner-bank response, or\n> network connectivity causing a delayed or missing response.\n>\n> In such cases the transaction must **not** be treated as declined or failed.\n> Inquire about its real status using this API with your own `client_ref_id`,\n> instead of retrying the payment.\n\n## `tx_status` values\n\n| `tx_status` | Description |\n|---|---|\n| 0 | Success |\n| 1 | Fail |\n| 2 | Response Awaited / Initiated (in case of NEFT) |\n| 3 | Refund Pending |\n| 4 | Refunded |\n| 5 | Hold (Transaction Inquiry required) |",
|
|
6527
6780
|
"bestFor": "Reconciling pending transactions and confirming payment outcomes when the Pay Bill response is awaited.",
|
|
6528
6781
|
"docsUrl": "https://eps.eko.in/docs/bbps-transaction-status",
|
|
6529
6782
|
"headers": [
|
|
@@ -6578,7 +6831,7 @@
|
|
|
6578
6831
|
"name": "transaction-reference",
|
|
6579
6832
|
"type": "string",
|
|
6580
6833
|
"required": true,
|
|
6581
|
-
"description": "Eko TID
|
|
6834
|
+
"description": "Eko TID or your `client_ref_id` that identifies the transaction. Pass a TID as-is; to look up by `client_ref_id`, prefix it — e.g. `client_ref_id:567890`.",
|
|
6582
6835
|
"example": "1734567890",
|
|
6583
6836
|
"in": "path"
|
|
6584
6837
|
}
|
|
@@ -7507,438 +7760,12 @@
|
|
|
7507
7760
|
"name": "data",
|
|
7508
7761
|
"type": "object",
|
|
7509
7762
|
"description": "API-specific response payload.",
|
|
7510
|
-
"children": [
|
|
7511
|
-
{
|
|
7512
|
-
"name": "reference_id",
|
|
7513
|
-
"type": "number",
|
|
7514
|
-
"description": "Unique identifier for the submitted batch. Pass this to the Bulk PAN Verification Status API to retrieve individual PAN results once processing is complete.",
|
|
7515
|
-
"example": 123456
|
|
7516
|
-
}
|
|
7517
|
-
]
|
|
7518
|
-
}
|
|
7519
|
-
],
|
|
7520
|
-
"sampleSuccessResponse": {
|
|
7521
|
-
"status": 0,
|
|
7522
|
-
"response_status_id": 0,
|
|
7523
|
-
"message": "Bulk PAN verification request accepted. Poll status API for results.",
|
|
7524
|
-
"response_type_id": 1388,
|
|
7525
|
-
"data": {
|
|
7526
|
-
"reference_id": 123456
|
|
7527
|
-
}
|
|
7528
|
-
},
|
|
7529
|
-
"errorScenarios": [
|
|
7530
|
-
{
|
|
7531
|
-
"scenario": "Empty or missing entries array",
|
|
7532
|
-
"statusCode": 400,
|
|
7533
|
-
"example": {
|
|
7534
|
-
"status": 1,
|
|
7535
|
-
"message": "Bad request — entries array is required and must not be empty"
|
|
7536
|
-
}
|
|
7537
|
-
},
|
|
7538
|
-
{
|
|
7539
|
-
"scenario": "Malformed PAN in one or more entries",
|
|
7540
|
-
"statusCode": 400,
|
|
7541
|
-
"example": {
|
|
7542
|
-
"status": 1,
|
|
7543
|
-
"message": "Bad request — one or more entries contain an invalid PAN format"
|
|
7544
|
-
}
|
|
7545
|
-
}
|
|
7546
|
-
],
|
|
7547
|
-
"responseTypes": []
|
|
7548
|
-
},
|
|
7549
|
-
{
|
|
7550
|
-
"slug": "pan-bulk-status",
|
|
7551
|
-
"productId": "pan",
|
|
7552
|
-
"productName": "PAN Verification",
|
|
7553
|
-
"name": "Check Bulk PAN Verification Status",
|
|
7554
|
-
"method": "GET",
|
|
7555
|
-
"path": "/tools/kyc/pan/bulk/status",
|
|
7556
|
-
"summary": "Poll the result of a Bulk PAN Verification batch using the reference_id returned when the batch was submitted.",
|
|
7557
|
-
"category": "verification",
|
|
7558
|
-
"relevance": "M",
|
|
7559
|
-
"description": "Retrieves the per-PAN results for a batch previously submitted via the Bulk PAN Verification API. Because bulk verification runs asynchronously, callers poll this endpoint with the reference_id from the submit response until the batch finishes processing. The response returns a count and an array of entries, one per PAN, each carrying the validity, registered name, name-match score/result, Aadhaar-seeding status, and PAN status.",
|
|
7560
|
-
"bestFor": "Fetching individual PAN results after submitting a batch to the Bulk PAN Verification API.",
|
|
7561
|
-
"docsUrl": "https://eps.eko.in/docs/pan-bulk-status",
|
|
7562
|
-
"headers": [
|
|
7563
|
-
{
|
|
7564
|
-
"name": "developer_key",
|
|
7565
|
-
"in": "header",
|
|
7566
|
-
"type": "string",
|
|
7567
|
-
"required": true,
|
|
7568
|
-
"description": "Static API key issued to your account after KYC."
|
|
7569
|
-
},
|
|
7570
|
-
{
|
|
7571
|
-
"name": "secret-key",
|
|
7572
|
-
"in": "header",
|
|
7573
|
-
"type": "string",
|
|
7574
|
-
"required": true,
|
|
7575
|
-
"description": "Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key)))."
|
|
7576
|
-
},
|
|
7577
|
-
{
|
|
7578
|
-
"name": "secret-key-timestamp",
|
|
7579
|
-
"in": "header",
|
|
7580
|
-
"type": "string",
|
|
7581
|
-
"required": true,
|
|
7582
|
-
"description": "Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time."
|
|
7583
|
-
},
|
|
7584
|
-
{
|
|
7585
|
-
"name": "content-type",
|
|
7586
|
-
"in": "header",
|
|
7587
|
-
"type": "string",
|
|
7588
|
-
"required": true,
|
|
7589
|
-
"description": "application/json",
|
|
7590
|
-
"example": "application/json"
|
|
7591
|
-
}
|
|
7592
|
-
],
|
|
7593
|
-
"requestParams": [
|
|
7594
|
-
{
|
|
7595
|
-
"name": "initiator_id",
|
|
7596
|
-
"type": "string",
|
|
7597
|
-
"required": true,
|
|
7598
|
-
"description": "Registered mobile number of the API user (see Platform Credentials).",
|
|
7599
|
-
"example": "9962981729",
|
|
7600
|
-
"in": "query"
|
|
7601
|
-
},
|
|
7602
|
-
{
|
|
7603
|
-
"name": "client_ref_id",
|
|
7604
|
-
"type": "string",
|
|
7605
|
-
"required": false,
|
|
7606
|
-
"description": "Unique reference ID per API call, generated by your system (max 20 characters).",
|
|
7607
|
-
"example": "2026010100123456789",
|
|
7608
|
-
"in": "query"
|
|
7609
|
-
},
|
|
7610
|
-
{
|
|
7611
|
-
"name": "reference_id",
|
|
7612
|
-
"type": "string",
|
|
7613
|
-
"required": true,
|
|
7614
|
-
"description": "Unique id returned by the Bulk PAN Verification API for the submitted batch.",
|
|
7615
|
-
"example": "123456",
|
|
7616
|
-
"in": "query"
|
|
7617
|
-
},
|
|
7618
|
-
{
|
|
7619
|
-
"name": "bulk_reference_id",
|
|
7620
|
-
"type": "string",
|
|
7621
|
-
"required": false,
|
|
7622
|
-
"description": "Unique id created to identify the bulk request, if you tracked one at submit time.",
|
|
7623
|
-
"example": "BULK-PAN-20240101-001",
|
|
7624
|
-
"in": "query"
|
|
7625
|
-
}
|
|
7626
|
-
],
|
|
7627
|
-
"sampleRequest": {},
|
|
7628
|
-
"responseFields": [
|
|
7629
|
-
{
|
|
7630
|
-
"name": "status",
|
|
7631
|
-
"type": "number",
|
|
7632
|
-
"description": "Primary success indicator (0 = success).",
|
|
7633
|
-
"example": 0
|
|
7634
|
-
},
|
|
7635
|
-
{
|
|
7636
|
-
"name": "message",
|
|
7637
|
-
"type": "string",
|
|
7638
|
-
"description": "Human-readable response / error message.",
|
|
7639
|
-
"example": "Verification successful"
|
|
7640
|
-
},
|
|
7641
|
-
{
|
|
7642
|
-
"name": "response_status_id",
|
|
7643
|
-
"type": "number",
|
|
7644
|
-
"description": "Granular status id; see the shared error-codes table.",
|
|
7645
|
-
"example": 0
|
|
7646
|
-
},
|
|
7647
|
-
{
|
|
7648
|
-
"name": "response_type_id",
|
|
7649
|
-
"type": "number",
|
|
7650
|
-
"description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
|
|
7651
|
-
"example": 1388
|
|
7652
|
-
},
|
|
7653
|
-
{
|
|
7654
|
-
"name": "data",
|
|
7655
|
-
"type": "object",
|
|
7656
|
-
"description": "API-specific response payload.",
|
|
7657
|
-
"children": [
|
|
7658
|
-
{
|
|
7659
|
-
"name": "count",
|
|
7660
|
-
"type": "number",
|
|
7661
|
-
"description": "Number of entries in the results array.",
|
|
7662
|
-
"imp": true,
|
|
7663
|
-
"example": 2
|
|
7664
|
-
},
|
|
7665
|
-
{
|
|
7666
|
-
"name": "entries",
|
|
7667
|
-
"type": "array",
|
|
7668
|
-
"description": "Per-PAN verification results for the batch.",
|
|
7669
|
-
"imp": true,
|
|
7670
|
-
"children": [
|
|
7671
|
-
{
|
|
7672
|
-
"name": "pan",
|
|
7673
|
-
"type": "string",
|
|
7674
|
-
"description": "10-character PAN identifier.",
|
|
7675
|
-
"imp": true,
|
|
7676
|
-
"example": "ABCPV1234D"
|
|
7677
|
-
},
|
|
7678
|
-
{
|
|
7679
|
-
"name": "valid",
|
|
7680
|
-
"type": "string",
|
|
7681
|
-
"description": "PAN card validity status.",
|
|
7682
|
-
"example": "true"
|
|
7683
|
-
},
|
|
7684
|
-
{
|
|
7685
|
-
"name": "registered_name",
|
|
7686
|
-
"type": "string",
|
|
7687
|
-
"description": "Name on record against the PAN.",
|
|
7688
|
-
"example": "John Doe"
|
|
7689
|
-
},
|
|
7690
|
-
{
|
|
7691
|
-
"name": "name_provided",
|
|
7692
|
-
"type": "string",
|
|
7693
|
-
"description": "Name submitted in the bulk request for this PAN.",
|
|
7694
|
-
"example": "John"
|
|
7695
|
-
},
|
|
7696
|
-
{
|
|
7697
|
-
"name": "name_match_score",
|
|
7698
|
-
"type": "string",
|
|
7699
|
-
"description": "Name verification score.",
|
|
7700
|
-
"example": "82.5"
|
|
7701
|
-
},
|
|
7702
|
-
{
|
|
7703
|
-
"name": "name_match_result",
|
|
7704
|
-
"type": "string",
|
|
7705
|
-
"description": "Name match result.",
|
|
7706
|
-
"example": "GOOD_PARTIAL_MATCH"
|
|
7707
|
-
},
|
|
7708
|
-
{
|
|
7709
|
-
"name": "aadhaar_seeding_status",
|
|
7710
|
-
"type": "string",
|
|
7711
|
-
"description": "Aadhaar-PAN linkage status.",
|
|
7712
|
-
"example": "Y"
|
|
7713
|
-
},
|
|
7714
|
-
{
|
|
7715
|
-
"name": "pan_status",
|
|
7716
|
-
"type": "string",
|
|
7717
|
-
"description": "Current PAN status.",
|
|
7718
|
-
"example": "VALID"
|
|
7719
|
-
},
|
|
7720
|
-
{
|
|
7721
|
-
"name": "message",
|
|
7722
|
-
"type": "string",
|
|
7723
|
-
"description": "Success or failure details for this entry.",
|
|
7724
|
-
"example": "PAN verified successfully"
|
|
7725
|
-
},
|
|
7726
|
-
{
|
|
7727
|
-
"name": "reference_id",
|
|
7728
|
-
"type": "string",
|
|
7729
|
-
"description": "Unique reference identifier for the entry.",
|
|
7730
|
-
"example": "123456"
|
|
7731
|
-
},
|
|
7732
|
-
{
|
|
7733
|
-
"name": "last_updated_at",
|
|
7734
|
-
"type": "string",
|
|
7735
|
-
"description": "Timestamp when the entry was last updated.",
|
|
7736
|
-
"example": "2024-01-01 12:30:45"
|
|
7737
|
-
}
|
|
7738
|
-
]
|
|
7739
|
-
}
|
|
7740
|
-
]
|
|
7741
|
-
}
|
|
7742
|
-
],
|
|
7743
|
-
"sampleSuccessResponse": {
|
|
7744
|
-
"status": 0,
|
|
7745
|
-
"response_status_id": 0,
|
|
7746
|
-
"message": "Success",
|
|
7747
|
-
"response_type_id": 1388,
|
|
7748
|
-
"data": {
|
|
7749
|
-
"count": 2,
|
|
7750
|
-
"entries": [
|
|
7751
|
-
{
|
|
7752
|
-
"pan": "ABCPV1234D",
|
|
7753
|
-
"valid": "true",
|
|
7754
|
-
"registered_name": "John Doe",
|
|
7755
|
-
"name_provided": "John",
|
|
7756
|
-
"name_match_score": "82.5",
|
|
7757
|
-
"name_match_result": "GOOD_PARTIAL_MATCH",
|
|
7758
|
-
"aadhaar_seeding_status": "Y",
|
|
7759
|
-
"pan_status": "VALID",
|
|
7760
|
-
"message": "PAN verified successfully",
|
|
7761
|
-
"reference_id": "123456",
|
|
7762
|
-
"last_updated_at": "2024-01-01 12:30:45"
|
|
7763
|
-
},
|
|
7764
|
-
{
|
|
7765
|
-
"pan": "ABCPV1234L",
|
|
7766
|
-
"valid": "true",
|
|
7767
|
-
"registered_name": "John Doe",
|
|
7768
|
-
"name_provided": "John Doe",
|
|
7769
|
-
"name_match_score": "100",
|
|
7770
|
-
"name_match_result": "EXACT_MATCH",
|
|
7771
|
-
"aadhaar_seeding_status": "Y",
|
|
7772
|
-
"pan_status": "VALID",
|
|
7773
|
-
"message": "PAN verified successfully",
|
|
7774
|
-
"reference_id": "123456",
|
|
7775
|
-
"last_updated_at": "2024-01-01 12:30:46"
|
|
7776
|
-
}
|
|
7777
|
-
]
|
|
7778
|
-
}
|
|
7779
|
-
},
|
|
7780
|
-
"errorScenarios": [
|
|
7781
|
-
{
|
|
7782
|
-
"scenario": "Missing reference_id",
|
|
7783
|
-
"statusCode": 400,
|
|
7784
|
-
"example": {
|
|
7785
|
-
"status": 1,
|
|
7786
|
-
"message": "Bad request — reference_id is required"
|
|
7787
|
-
}
|
|
7788
|
-
},
|
|
7789
|
-
{
|
|
7790
|
-
"scenario": "Unknown or expired reference_id",
|
|
7791
|
-
"statusCode": 404,
|
|
7792
|
-
"example": {
|
|
7793
|
-
"status": 1,
|
|
7794
|
-
"message": "No batch found for the supplied reference_id"
|
|
7795
|
-
}
|
|
7796
|
-
}
|
|
7797
|
-
],
|
|
7798
|
-
"responseTypes": []
|
|
7799
|
-
},
|
|
7800
|
-
{
|
|
7801
|
-
"slug": "aadhaar-dmt-levin-validate",
|
|
7802
|
-
"productId": "dmt",
|
|
7803
|
-
"productName": "Domestic Money Transfer (DMT)",
|
|
7804
|
-
"name": "Validate Aadhaar & Generate OTP",
|
|
7805
|
-
"method": "POST",
|
|
7806
|
-
"path": "/customer/payment/dmt-levin/sender/{customer_id}/aadhaar/otp",
|
|
7807
|
-
"summary": "Validate a sender's Aadhaar number and trigger an OTP to the linked mobile for DMT Levin onboarding.",
|
|
7808
|
-
"category": "bc",
|
|
7809
|
-
"relevance": "M",
|
|
7810
|
-
"description": "Submits the sender's Aadhaar number via the DMT Levin channel to initiate OTP-based Aadhaar validation. The `otp_ref_id` from the sender's existing profile plus the Aadhaar number are required. Returns a new `otp_ref_id` for the validation session. Part of the Levin DMT sender onboarding flow.",
|
|
7811
|
-
"bestFor": "DMT Levin sender onboarding flows that require Aadhaar number validation as a step before completing identity verification.",
|
|
7812
|
-
"docsUrl": "https://eps.eko.in/docs/aadhaar-dmt-levin-validate",
|
|
7813
|
-
"headers": [
|
|
7814
|
-
{
|
|
7815
|
-
"name": "developer_key",
|
|
7816
|
-
"in": "header",
|
|
7817
|
-
"type": "string",
|
|
7818
|
-
"required": true,
|
|
7819
|
-
"description": "Static API key issued to your account after KYC."
|
|
7820
|
-
},
|
|
7821
|
-
{
|
|
7822
|
-
"name": "secret-key",
|
|
7823
|
-
"in": "header",
|
|
7824
|
-
"type": "string",
|
|
7825
|
-
"required": true,
|
|
7826
|
-
"description": "Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key)))."
|
|
7827
|
-
},
|
|
7828
|
-
{
|
|
7829
|
-
"name": "secret-key-timestamp",
|
|
7830
|
-
"in": "header",
|
|
7831
|
-
"type": "string",
|
|
7832
|
-
"required": true,
|
|
7833
|
-
"description": "Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time."
|
|
7834
|
-
},
|
|
7835
|
-
{
|
|
7836
|
-
"name": "content-type",
|
|
7837
|
-
"in": "header",
|
|
7838
|
-
"type": "string",
|
|
7839
|
-
"required": true,
|
|
7840
|
-
"description": "application/json",
|
|
7841
|
-
"example": "application/json"
|
|
7842
|
-
}
|
|
7843
|
-
],
|
|
7844
|
-
"requestParams": [
|
|
7845
|
-
{
|
|
7846
|
-
"name": "initiator_id",
|
|
7847
|
-
"type": "string",
|
|
7848
|
-
"required": true,
|
|
7849
|
-
"description": "Registered mobile number of the API user (see Platform Credentials).",
|
|
7850
|
-
"example": "9962981729",
|
|
7851
|
-
"in": "body"
|
|
7852
|
-
},
|
|
7853
|
-
{
|
|
7854
|
-
"name": "client_ref_id",
|
|
7855
|
-
"type": "string",
|
|
7856
|
-
"required": false,
|
|
7857
|
-
"description": "Unique reference ID per API call, generated by your system (max 20 characters).",
|
|
7858
|
-
"example": "2026010100123456789",
|
|
7859
|
-
"in": "body"
|
|
7860
|
-
},
|
|
7861
|
-
{
|
|
7862
|
-
"name": "customer_id",
|
|
7863
|
-
"type": "integer",
|
|
7864
|
-
"required": true,
|
|
7865
|
-
"description": "Sender's mobile number.",
|
|
7866
|
-
"example": 9876543210,
|
|
7867
|
-
"in": "path"
|
|
7868
|
-
},
|
|
7869
|
-
{
|
|
7870
|
-
"name": "aadhar",
|
|
7871
|
-
"type": "string",
|
|
7872
|
-
"required": true,
|
|
7873
|
-
"description": "12-digit Aadhaar number of the sender.",
|
|
7874
|
-
"example": "123456789012",
|
|
7875
|
-
"in": "body"
|
|
7876
|
-
},
|
|
7877
|
-
{
|
|
7878
|
-
"name": "otp_ref_id",
|
|
7879
|
-
"type": "string",
|
|
7880
|
-
"required": true,
|
|
7881
|
-
"description": "Reference ID returned from the Get Sender Info (or Create Sender) API for this customer.",
|
|
7882
|
-
"example": "73849201",
|
|
7883
|
-
"in": "body"
|
|
7884
|
-
},
|
|
7885
|
-
{
|
|
7886
|
-
"name": "additional_info",
|
|
7887
|
-
"type": "string",
|
|
7888
|
-
"required": true,
|
|
7889
|
-
"description": "Additional info flag. Defaults to 1.",
|
|
7890
|
-
"example": "1",
|
|
7891
|
-
"in": "body"
|
|
7892
|
-
}
|
|
7893
|
-
],
|
|
7894
|
-
"sampleRequest": {
|
|
7895
|
-
"initiator_id": "9962981729",
|
|
7896
|
-
"client_ref_id": "2026010100123456789",
|
|
7897
|
-
"aadhar": "123456789012",
|
|
7898
|
-
"otp_ref_id": "73849201",
|
|
7899
|
-
"additional_info": "1"
|
|
7900
|
-
},
|
|
7901
|
-
"responseFields": [
|
|
7902
|
-
{
|
|
7903
|
-
"name": "status",
|
|
7904
|
-
"type": "number",
|
|
7905
|
-
"description": "Primary success indicator (0 = success).",
|
|
7906
|
-
"example": 0
|
|
7907
|
-
},
|
|
7908
|
-
{
|
|
7909
|
-
"name": "message",
|
|
7910
|
-
"type": "string",
|
|
7911
|
-
"description": "Human-readable response / error message.",
|
|
7912
|
-
"example": "Verification successful"
|
|
7913
|
-
},
|
|
7914
|
-
{
|
|
7915
|
-
"name": "response_status_id",
|
|
7916
|
-
"type": "number",
|
|
7917
|
-
"description": "Granular status id; see the shared error-codes table.",
|
|
7918
|
-
"example": 0
|
|
7919
|
-
},
|
|
7920
|
-
{
|
|
7921
|
-
"name": "response_type_id",
|
|
7922
|
-
"type": "number",
|
|
7923
|
-
"description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
|
|
7924
|
-
"example": 1388
|
|
7925
|
-
},
|
|
7926
|
-
{
|
|
7927
|
-
"name": "data",
|
|
7928
|
-
"type": "object",
|
|
7929
|
-
"description": "API-specific response payload.",
|
|
7930
|
-
"children": [
|
|
7931
|
-
{
|
|
7932
|
-
"name": "otp_ref_id",
|
|
7933
|
-
"type": "string",
|
|
7934
|
-
"description": "New OTP reference ID for the Aadhaar validation session. Pass to Validate Sender Aadhaar OTP.",
|
|
7935
|
-
"example": "93847201"
|
|
7936
|
-
},
|
|
7937
|
-
{
|
|
7938
|
-
"name": "mobile_hint",
|
|
7939
|
-
"type": "string",
|
|
7940
|
-
"description": "Masked mobile number to which the OTP was dispatched.",
|
|
7941
|
-
"example": "******3210"
|
|
7763
|
+
"children": [
|
|
7764
|
+
{
|
|
7765
|
+
"name": "reference_id",
|
|
7766
|
+
"type": "number",
|
|
7767
|
+
"description": "Unique identifier for the submitted batch. Pass this to the Bulk PAN Verification Status API to retrieve individual PAN results once processing is complete.",
|
|
7768
|
+
"example": 123456
|
|
7942
7769
|
}
|
|
7943
7770
|
]
|
|
7944
7771
|
}
|
|
@@ -7946,41 +7773,45 @@
|
|
|
7946
7773
|
"sampleSuccessResponse": {
|
|
7947
7774
|
"status": 0,
|
|
7948
7775
|
"response_status_id": 0,
|
|
7949
|
-
"message": "
|
|
7776
|
+
"message": "Bulk PAN verification request accepted. Poll status API for results.",
|
|
7950
7777
|
"response_type_id": 1388,
|
|
7951
7778
|
"data": {
|
|
7952
|
-
"
|
|
7953
|
-
"mobile_hint": "******3210"
|
|
7779
|
+
"reference_id": 123456
|
|
7954
7780
|
}
|
|
7955
7781
|
},
|
|
7956
7782
|
"errorScenarios": [
|
|
7957
7783
|
{
|
|
7958
|
-
"scenario": "
|
|
7959
|
-
"statusCode":
|
|
7784
|
+
"scenario": "Empty or missing entries array",
|
|
7785
|
+
"statusCode": 400,
|
|
7960
7786
|
"example": {
|
|
7961
7787
|
"status": 1,
|
|
7962
|
-
"
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
|
|
7788
|
+
"message": "Bad request — entries array is required and must not be empty"
|
|
7789
|
+
}
|
|
7790
|
+
},
|
|
7791
|
+
{
|
|
7792
|
+
"scenario": "Malformed PAN in one or more entries",
|
|
7793
|
+
"statusCode": 400,
|
|
7794
|
+
"example": {
|
|
7795
|
+
"status": 1,
|
|
7796
|
+
"message": "Bad request — one or more entries contain an invalid PAN format"
|
|
7966
7797
|
}
|
|
7967
7798
|
}
|
|
7968
7799
|
],
|
|
7969
7800
|
"responseTypes": []
|
|
7970
7801
|
},
|
|
7971
7802
|
{
|
|
7972
|
-
"slug": "
|
|
7973
|
-
"productId": "
|
|
7974
|
-
"productName": "
|
|
7975
|
-
"name": "
|
|
7976
|
-
"method": "
|
|
7977
|
-
"path": "/
|
|
7978
|
-
"summary": "
|
|
7979
|
-
"category": "
|
|
7803
|
+
"slug": "pan-bulk-status",
|
|
7804
|
+
"productId": "pan",
|
|
7805
|
+
"productName": "PAN Verification",
|
|
7806
|
+
"name": "Check Bulk PAN Verification Status",
|
|
7807
|
+
"method": "GET",
|
|
7808
|
+
"path": "/tools/kyc/pan/bulk/status",
|
|
7809
|
+
"summary": "Poll the result of a Bulk PAN Verification batch using the reference_id returned when the batch was submitted.",
|
|
7810
|
+
"category": "verification",
|
|
7980
7811
|
"relevance": "M",
|
|
7981
|
-
"description": "
|
|
7982
|
-
"bestFor": "
|
|
7983
|
-
"docsUrl": "https://eps.eko.in/docs/
|
|
7812
|
+
"description": "Retrieves the per-PAN results for a batch previously submitted via the Bulk PAN Verification API. Because bulk verification runs asynchronously, callers poll this endpoint with the reference_id from the submit response until the batch finishes processing. The response returns a count and an array of entries, one per PAN, each carrying the validity, registered name, name-match score/result, Aadhaar-seeding status, and PAN status.",
|
|
7813
|
+
"bestFor": "Fetching individual PAN results after submitting a batch to the Bulk PAN Verification API.",
|
|
7814
|
+
"docsUrl": "https://eps.eko.in/docs/pan-bulk-status",
|
|
7984
7815
|
"headers": [
|
|
7985
7816
|
{
|
|
7986
7817
|
"name": "developer_key",
|
|
@@ -8019,7 +7850,7 @@
|
|
|
8019
7850
|
"required": true,
|
|
8020
7851
|
"description": "Registered mobile number of the API user (see Platform Credentials).",
|
|
8021
7852
|
"example": "9962981729",
|
|
8022
|
-
"in": "
|
|
7853
|
+
"in": "query"
|
|
8023
7854
|
},
|
|
8024
7855
|
{
|
|
8025
7856
|
"name": "client_ref_id",
|
|
@@ -8027,57 +7858,26 @@
|
|
|
8027
7858
|
"required": false,
|
|
8028
7859
|
"description": "Unique reference ID per API call, generated by your system (max 20 characters).",
|
|
8029
7860
|
"example": "2026010100123456789",
|
|
8030
|
-
"in": "
|
|
7861
|
+
"in": "query"
|
|
8031
7862
|
},
|
|
8032
7863
|
{
|
|
8033
|
-
"name": "
|
|
7864
|
+
"name": "reference_id",
|
|
8034
7865
|
"type": "string",
|
|
8035
7866
|
"required": true,
|
|
8036
|
-
"description": "
|
|
8037
|
-
"example": "
|
|
8038
|
-
"in": "
|
|
8039
|
-
},
|
|
8040
|
-
{
|
|
8041
|
-
"name": "otp",
|
|
8042
|
-
"type": "integer",
|
|
8043
|
-
"required": false,
|
|
8044
|
-
"description": "OTP received on the Aadhaar-linked mobile number.",
|
|
8045
|
-
"example": 123456,
|
|
8046
|
-
"in": "body"
|
|
8047
|
-
},
|
|
8048
|
-
{
|
|
8049
|
-
"name": "otp_ref_id",
|
|
8050
|
-
"type": "integer",
|
|
8051
|
-
"required": true,
|
|
8052
|
-
"description": "Reference ID from the Validate Aadhaar (DMT Levin) response.",
|
|
8053
|
-
"example": 93847201,
|
|
8054
|
-
"in": "body"
|
|
8055
|
-
},
|
|
8056
|
-
{
|
|
8057
|
-
"name": "intent_id",
|
|
8058
|
-
"type": "string",
|
|
8059
|
-
"required": false,
|
|
8060
|
-
"description": "Set to \"19\" for sender onboarding or \"20\" for Aadhaar validation.",
|
|
8061
|
-
"example": "20",
|
|
8062
|
-
"in": "body"
|
|
7867
|
+
"description": "Unique id returned by the Bulk PAN Verification API for the submitted batch.",
|
|
7868
|
+
"example": "123456",
|
|
7869
|
+
"in": "query"
|
|
8063
7870
|
},
|
|
8064
7871
|
{
|
|
8065
|
-
"name": "
|
|
7872
|
+
"name": "bulk_reference_id",
|
|
8066
7873
|
"type": "string",
|
|
8067
7874
|
"required": false,
|
|
8068
|
-
"description": "
|
|
8069
|
-
"example": "
|
|
8070
|
-
"in": "
|
|
7875
|
+
"description": "Unique id created to identify the bulk request, if you tracked one at submit time.",
|
|
7876
|
+
"example": "BULK-PAN-20240101-001",
|
|
7877
|
+
"in": "query"
|
|
8071
7878
|
}
|
|
8072
7879
|
],
|
|
8073
|
-
"sampleRequest": {
|
|
8074
|
-
"initiator_id": "9962981729",
|
|
8075
|
-
"client_ref_id": "2026010100123456789",
|
|
8076
|
-
"otp": 123456,
|
|
8077
|
-
"otp_ref_id": 93847201,
|
|
8078
|
-
"intent_id": "20",
|
|
8079
|
-
"additional_info": "1"
|
|
8080
|
-
},
|
|
7880
|
+
"sampleRequest": {},
|
|
8081
7881
|
"responseFields": [
|
|
8082
7882
|
{
|
|
8083
7883
|
"name": "status",
|
|
@@ -8109,39 +7909,86 @@
|
|
|
8109
7909
|
"description": "API-specific response payload.",
|
|
8110
7910
|
"children": [
|
|
8111
7911
|
{
|
|
8112
|
-
"name": "
|
|
8113
|
-
"type": "
|
|
8114
|
-
"description": "
|
|
8115
|
-
"imp": true,
|
|
8116
|
-
"example": true
|
|
8117
|
-
},
|
|
8118
|
-
{
|
|
8119
|
-
"name": "name",
|
|
8120
|
-
"type": "string",
|
|
8121
|
-
"description": "Verified sender name from Aadhaar.",
|
|
8122
|
-
"imp": true,
|
|
8123
|
-
"example": "Arjun Mehta"
|
|
8124
|
-
},
|
|
8125
|
-
{
|
|
8126
|
-
"name": "gender",
|
|
8127
|
-
"type": "string",
|
|
8128
|
-
"description": "Gender from Aadhaar record.",
|
|
8129
|
-
"imp": true,
|
|
8130
|
-
"example": "M"
|
|
8131
|
-
},
|
|
8132
|
-
{
|
|
8133
|
-
"name": "dob",
|
|
8134
|
-
"type": "string",
|
|
8135
|
-
"description": "Date of birth from Aadhaar.",
|
|
7912
|
+
"name": "count",
|
|
7913
|
+
"type": "number",
|
|
7914
|
+
"description": "Number of entries in the results array.",
|
|
8136
7915
|
"imp": true,
|
|
8137
|
-
"example":
|
|
7916
|
+
"example": 2
|
|
8138
7917
|
},
|
|
8139
7918
|
{
|
|
8140
|
-
"name": "
|
|
8141
|
-
"type": "
|
|
8142
|
-
"description": "
|
|
7919
|
+
"name": "entries",
|
|
7920
|
+
"type": "array",
|
|
7921
|
+
"description": "Per-PAN verification results for the batch.",
|
|
8143
7922
|
"imp": true,
|
|
8144
|
-
"
|
|
7923
|
+
"children": [
|
|
7924
|
+
{
|
|
7925
|
+
"name": "pan",
|
|
7926
|
+
"type": "string",
|
|
7927
|
+
"description": "10-character PAN identifier.",
|
|
7928
|
+
"imp": true,
|
|
7929
|
+
"example": "ABCPV1234D"
|
|
7930
|
+
},
|
|
7931
|
+
{
|
|
7932
|
+
"name": "valid",
|
|
7933
|
+
"type": "string",
|
|
7934
|
+
"description": "PAN card validity status.",
|
|
7935
|
+
"example": "true"
|
|
7936
|
+
},
|
|
7937
|
+
{
|
|
7938
|
+
"name": "registered_name",
|
|
7939
|
+
"type": "string",
|
|
7940
|
+
"description": "Name on record against the PAN.",
|
|
7941
|
+
"example": "John Doe"
|
|
7942
|
+
},
|
|
7943
|
+
{
|
|
7944
|
+
"name": "name_provided",
|
|
7945
|
+
"type": "string",
|
|
7946
|
+
"description": "Name submitted in the bulk request for this PAN.",
|
|
7947
|
+
"example": "John"
|
|
7948
|
+
},
|
|
7949
|
+
{
|
|
7950
|
+
"name": "name_match_score",
|
|
7951
|
+
"type": "string",
|
|
7952
|
+
"description": "Name verification score.",
|
|
7953
|
+
"example": "82.5"
|
|
7954
|
+
},
|
|
7955
|
+
{
|
|
7956
|
+
"name": "name_match_result",
|
|
7957
|
+
"type": "string",
|
|
7958
|
+
"description": "Name match result.",
|
|
7959
|
+
"example": "GOOD_PARTIAL_MATCH"
|
|
7960
|
+
},
|
|
7961
|
+
{
|
|
7962
|
+
"name": "aadhaar_seeding_status",
|
|
7963
|
+
"type": "string",
|
|
7964
|
+
"description": "Aadhaar-PAN linkage status.",
|
|
7965
|
+
"example": "Y"
|
|
7966
|
+
},
|
|
7967
|
+
{
|
|
7968
|
+
"name": "pan_status",
|
|
7969
|
+
"type": "string",
|
|
7970
|
+
"description": "Current PAN status.",
|
|
7971
|
+
"example": "VALID"
|
|
7972
|
+
},
|
|
7973
|
+
{
|
|
7974
|
+
"name": "message",
|
|
7975
|
+
"type": "string",
|
|
7976
|
+
"description": "Success or failure details for this entry.",
|
|
7977
|
+
"example": "PAN verified successfully"
|
|
7978
|
+
},
|
|
7979
|
+
{
|
|
7980
|
+
"name": "reference_id",
|
|
7981
|
+
"type": "string",
|
|
7982
|
+
"description": "Unique reference identifier for the entry.",
|
|
7983
|
+
"example": "123456"
|
|
7984
|
+
},
|
|
7985
|
+
{
|
|
7986
|
+
"name": "last_updated_at",
|
|
7987
|
+
"type": "string",
|
|
7988
|
+
"description": "Timestamp when the entry was last updated.",
|
|
7989
|
+
"example": "2024-01-01 12:30:45"
|
|
7990
|
+
}
|
|
7991
|
+
]
|
|
8145
7992
|
}
|
|
8146
7993
|
]
|
|
8147
7994
|
}
|
|
@@ -8149,37 +7996,55 @@
|
|
|
8149
7996
|
"sampleSuccessResponse": {
|
|
8150
7997
|
"status": 0,
|
|
8151
7998
|
"response_status_id": 0,
|
|
8152
|
-
"message": "
|
|
7999
|
+
"message": "Success",
|
|
8153
8000
|
"response_type_id": 1388,
|
|
8154
8001
|
"data": {
|
|
8155
|
-
"
|
|
8156
|
-
"
|
|
8157
|
-
|
|
8158
|
-
|
|
8159
|
-
|
|
8002
|
+
"count": 2,
|
|
8003
|
+
"entries": [
|
|
8004
|
+
{
|
|
8005
|
+
"pan": "ABCPV1234D",
|
|
8006
|
+
"valid": "true",
|
|
8007
|
+
"registered_name": "John Doe",
|
|
8008
|
+
"name_provided": "John",
|
|
8009
|
+
"name_match_score": "82.5",
|
|
8010
|
+
"name_match_result": "GOOD_PARTIAL_MATCH",
|
|
8011
|
+
"aadhaar_seeding_status": "Y",
|
|
8012
|
+
"pan_status": "VALID",
|
|
8013
|
+
"message": "PAN verified successfully",
|
|
8014
|
+
"reference_id": "123456",
|
|
8015
|
+
"last_updated_at": "2024-01-01 12:30:45"
|
|
8016
|
+
},
|
|
8017
|
+
{
|
|
8018
|
+
"pan": "ABCPV1234L",
|
|
8019
|
+
"valid": "true",
|
|
8020
|
+
"registered_name": "John Doe",
|
|
8021
|
+
"name_provided": "John Doe",
|
|
8022
|
+
"name_match_score": "100",
|
|
8023
|
+
"name_match_result": "EXACT_MATCH",
|
|
8024
|
+
"aadhaar_seeding_status": "Y",
|
|
8025
|
+
"pan_status": "VALID",
|
|
8026
|
+
"message": "PAN verified successfully",
|
|
8027
|
+
"reference_id": "123456",
|
|
8028
|
+
"last_updated_at": "2024-01-01 12:30:46"
|
|
8029
|
+
}
|
|
8030
|
+
]
|
|
8160
8031
|
}
|
|
8161
8032
|
},
|
|
8162
8033
|
"errorScenarios": [
|
|
8163
8034
|
{
|
|
8164
|
-
"scenario": "
|
|
8165
|
-
"statusCode":
|
|
8035
|
+
"scenario": "Missing reference_id",
|
|
8036
|
+
"statusCode": 400,
|
|
8166
8037
|
"example": {
|
|
8167
8038
|
"status": 1,
|
|
8168
|
-
"
|
|
8169
|
-
"message": "Wrong OTP. Please check and retry.",
|
|
8170
|
-
"response_type_id": 1388,
|
|
8171
|
-
"data": {}
|
|
8039
|
+
"message": "Bad request — reference_id is required"
|
|
8172
8040
|
}
|
|
8173
8041
|
},
|
|
8174
8042
|
{
|
|
8175
|
-
"scenario": "
|
|
8176
|
-
"statusCode":
|
|
8043
|
+
"scenario": "Unknown or expired reference_id",
|
|
8044
|
+
"statusCode": 404,
|
|
8177
8045
|
"example": {
|
|
8178
8046
|
"status": 1,
|
|
8179
|
-
"
|
|
8180
|
-
"message": "OTP expired. Please regenerate.",
|
|
8181
|
-
"response_type_id": 1388,
|
|
8182
|
-
"data": {}
|
|
8047
|
+
"message": "No batch found for the supplied reference_id"
|
|
8183
8048
|
}
|
|
8184
8049
|
}
|
|
8185
8050
|
],
|
|
@@ -13726,7 +13591,7 @@
|
|
|
13726
13591
|
"summary": "Activate a specific service (by service code) for one of your agents/retailers.",
|
|
13727
13592
|
"category": "util",
|
|
13728
13593
|
"relevance": "M",
|
|
13729
|
-
"description": "Enables a service for the given agent so they can begin transacting on it. The
|
|
13594
|
+
"description": "Enables a service for the given user (agent/retailer/distributor) so they can begin transacting on it. Activating a service is mandatory before your users can use it in production. The user is identified by their `user_code` and the service by its `service_code`, both supplied as path parameters. Look up service codes via the Get All Services API. After activation, confirm the status with the Get User's Services API.",
|
|
13730
13595
|
"bestFor": "Enabling a new service on an existing agent before their first transaction on it",
|
|
13731
13596
|
"docsUrl": "https://eps.eko.in/docs/activate-user-service",
|
|
13732
13597
|
"headers": [
|
|
@@ -14527,7 +14392,7 @@
|
|
|
14527
14392
|
"name": "transaction-reference",
|
|
14528
14393
|
"type": "string",
|
|
14529
14394
|
"required": true,
|
|
14530
|
-
"description": "Eko TID or your client_ref_id
|
|
14395
|
+
"description": "Eko TID or your `client_ref_id` that identifies the transaction. Pass a TID as-is; to look up by `client_ref_id`, prefix it — e.g. `client_ref_id:567890`.",
|
|
14531
14396
|
"example": "12971397",
|
|
14532
14397
|
"in": "path"
|
|
14533
14398
|
}
|
|
@@ -22794,41 +22659,87 @@
|
|
|
22794
22659
|
],
|
|
22795
22660
|
"recipes": [
|
|
22796
22661
|
{
|
|
22797
|
-
"id": "dmt-send-money",
|
|
22798
|
-
"slug": "dmt-send-money",
|
|
22799
|
-
"name": "DMT — Send Money",
|
|
22800
|
-
"summary": "Full
|
|
22662
|
+
"id": "dmt-fino-send-money",
|
|
22663
|
+
"slug": "dmt-fino-send-money",
|
|
22664
|
+
"name": "DMT (Fino) — Send Money",
|
|
22665
|
+
"summary": "Full Fino DMT money-transfer flow: look up the sender, onboard and biometric-eKYC them if new, pick or add the recipient, then send an OTP-verified transfer.",
|
|
22801
22666
|
"productId": "dmt",
|
|
22802
22667
|
"steps": [
|
|
22803
22668
|
{
|
|
22804
22669
|
"specSlug": "dmt-get-sender",
|
|
22805
|
-
"purpose": "Check whether the customer is already a registered DMT sender.",
|
|
22670
|
+
"purpose": "Check whether the customer is already a registered DMT sender, and which stage of onboarding they are at. The `response_type_id` decides where the flow enters.",
|
|
22806
22671
|
"branches": [
|
|
22807
22672
|
{
|
|
22808
22673
|
"onResponseTypeId": 308,
|
|
22809
22674
|
"goto": "dmt-onboard-sender",
|
|
22810
22675
|
"note": "Sender not found — onboard them before continuing."
|
|
22676
|
+
},
|
|
22677
|
+
{
|
|
22678
|
+
"onResponseTypeId": 2134,
|
|
22679
|
+
"goto": "dmt-fino-sender-ekyc",
|
|
22680
|
+
"note": "Sender found but biometric eKYC is pending — capture their fingerprint."
|
|
22681
|
+
},
|
|
22682
|
+
{
|
|
22683
|
+
"onResponseTypeId": 2129,
|
|
22684
|
+
"goto": "dmt-fino-validate-ekyc-otp",
|
|
22685
|
+
"note": "Sender found mid-eKYC — only the OTP validation is left."
|
|
22686
|
+
},
|
|
22687
|
+
{
|
|
22688
|
+
"onResponseTypeId": 309,
|
|
22689
|
+
"goto": "dmt-get-recipients",
|
|
22690
|
+
"note": "Sender found and KYC complete — skip onboarding and go straight to recipients."
|
|
22811
22691
|
}
|
|
22812
22692
|
]
|
|
22813
22693
|
},
|
|
22814
22694
|
{
|
|
22815
22695
|
"specSlug": "dmt-onboard-sender",
|
|
22816
|
-
"purpose": "Register a new sender
|
|
22696
|
+
"purpose": "Register a new sender with name, date of birth and residence address. This opens the sender on Eko but leaves KYC pending on Fino (`response_type_id=2134`) — they cannot transact yet.",
|
|
22697
|
+
"branches": [
|
|
22698
|
+
{
|
|
22699
|
+
"onResponseTypeId": 309,
|
|
22700
|
+
"goto": "dmt-get-recipients",
|
|
22701
|
+
"note": "Already onboarded on Fino externally, KYC complete — no eKYC needed."
|
|
22702
|
+
}
|
|
22703
|
+
]
|
|
22704
|
+
},
|
|
22705
|
+
{
|
|
22706
|
+
"specSlug": "dmt-fino-sender-ekyc",
|
|
22707
|
+
"purpose": "Biometric Aadhaar eKYC — one-time per sender. Capture the PID block from an RD-service fingerprint scanner and submit it with the sender's Aadhaar number; the response returns the `kyc_request_id` and `otp_ref_id` the next step needs. Completing eKYC raises the sender's monthly limit from ₹5,000 to ₹25,000."
|
|
22708
|
+
},
|
|
22709
|
+
{
|
|
22710
|
+
"specSlug": "dmt-fino-validate-ekyc-otp",
|
|
22711
|
+
"purpose": "Confirm the eKYC by submitting the OTP sent to the sender's Aadhaar-linked mobile, along with the `kyc_request_id` and `otp_ref_id` from the biometric step. The sender is fully KYC-verified on success."
|
|
22712
|
+
},
|
|
22713
|
+
{
|
|
22714
|
+
"specSlug": "dmt-get-recipients",
|
|
22715
|
+
"purpose": "List the sender's saved beneficiaries. If the one they want is already there, reuse its `recipient_id` and skip Add Recipient.",
|
|
22716
|
+
"branches": [
|
|
22717
|
+
{
|
|
22718
|
+
"onResponseTypeId": 22,
|
|
22719
|
+
"goto": "dmt-add-recipient",
|
|
22720
|
+
"note": "No recipients saved yet — add one before transacting."
|
|
22721
|
+
},
|
|
22722
|
+
{
|
|
22723
|
+
"onResponseTypeId": 23,
|
|
22724
|
+
"goto": "dmt-send-otp",
|
|
22725
|
+
"note": "Recipient already saved — reuse its `recipient_id`."
|
|
22726
|
+
}
|
|
22727
|
+
]
|
|
22817
22728
|
},
|
|
22818
22729
|
{
|
|
22819
22730
|
"specSlug": "dmt-add-recipient",
|
|
22820
|
-
"purpose": "Add the beneficiary the sender wants to transfer to."
|
|
22731
|
+
"purpose": "Add the beneficiary the sender wants to transfer to; returns the `recipient_id` used by the two transaction steps."
|
|
22821
22732
|
},
|
|
22822
22733
|
{
|
|
22823
22734
|
"specSlug": "dmt-send-otp",
|
|
22824
|
-
"purpose": "
|
|
22735
|
+
"purpose": "Pre-authorise the transfer: sends an OTP to the sender's registered mobile and returns the `otp_ref_id`. Required before every transfer — request a fresh one per attempt."
|
|
22825
22736
|
},
|
|
22826
22737
|
{
|
|
22827
22738
|
"specSlug": "dmt-initiate-transfer",
|
|
22828
|
-
"purpose": "Submit the
|
|
22739
|
+
"purpose": "Submit the transfer with the customer-entered OTP, its `otp_ref_id`, and a `client_ref_id` unique to this attempt. The only money-debit step — persist `tid` and `bank_ref_num` and reconcile before any retry.",
|
|
22829
22740
|
"branches": [
|
|
22830
22741
|
{
|
|
22831
|
-
"
|
|
22742
|
+
"onStatus": 0,
|
|
22832
22743
|
"goto": "done"
|
|
22833
22744
|
}
|
|
22834
22745
|
]
|
|
@@ -22836,43 +22747,43 @@
|
|
|
22836
22747
|
]
|
|
22837
22748
|
},
|
|
22838
22749
|
{
|
|
22839
|
-
"id": "aeps-cash-withdrawal",
|
|
22840
|
-
"slug": "aeps-cash-withdrawal",
|
|
22841
|
-
"name": "AePS — Cash Withdrawal",
|
|
22750
|
+
"id": "aeps-fingpay-cash-withdrawal",
|
|
22751
|
+
"slug": "aeps-fingpay-cash-withdrawal",
|
|
22752
|
+
"name": "AePS (Fingpay) — Cash Withdrawal",
|
|
22842
22753
|
"summary": "Aadhaar-enabled cash withdrawal: one-time agent activation and eKYC, daily KYC, then the biometric withdrawal.",
|
|
22843
22754
|
"productId": "aeps",
|
|
22844
22755
|
"steps": [
|
|
22845
22756
|
{
|
|
22846
|
-
"specSlug": "aeps-
|
|
22757
|
+
"specSlug": "activate-aeps-fingpay",
|
|
22847
22758
|
"purpose": "One-time activation of AePS Fingpay for the agent.",
|
|
22848
22759
|
"frequency": "once"
|
|
22849
22760
|
},
|
|
22850
22761
|
{
|
|
22851
|
-
"specSlug": "aeps-send-otp-kyc",
|
|
22762
|
+
"specSlug": "aeps-fingpay-send-otp-kyc",
|
|
22852
22763
|
"purpose": "One-time eKYC step 1 (agent onboarding, not per transaction): OTP to the agent's Aadhaar-linked mobile.",
|
|
22853
22764
|
"frequency": "once"
|
|
22854
22765
|
},
|
|
22855
22766
|
{
|
|
22856
|
-
"specSlug": "aeps-verify-otp-kyc",
|
|
22767
|
+
"specSlug": "aeps-fingpay-verify-otp-kyc",
|
|
22857
22768
|
"purpose": "One-time eKYC step 2 (agent onboarding): verify the OTP with the otp_ref_id and reference_tid from step 1.",
|
|
22858
22769
|
"frequency": "once"
|
|
22859
22770
|
},
|
|
22860
22771
|
{
|
|
22861
|
-
"specSlug": "aeps-biometric-ekyc",
|
|
22772
|
+
"specSlug": "aeps-fingpay-biometric-ekyc",
|
|
22862
22773
|
"purpose": "One-time eKYC step 3 (agent onboarding): the agent's biometric PID completes eKYC.",
|
|
22863
22774
|
"frequency": "once"
|
|
22864
22775
|
},
|
|
22865
22776
|
{
|
|
22866
|
-
"specSlug": "aeps-daily-auth",
|
|
22777
|
+
"specSlug": "aeps-fingpay-daily-auth",
|
|
22867
22778
|
"purpose": "Daily KYC — biometric-only, repeated once per calendar day before the agent's first transaction.",
|
|
22868
22779
|
"frequency": "daily"
|
|
22869
22780
|
},
|
|
22870
22781
|
{
|
|
22871
|
-
"specSlug": "aeps-cash-withdrawal",
|
|
22782
|
+
"specSlug": "aeps-fingpay-cash-withdrawal",
|
|
22872
22783
|
"purpose": "Perform the biometric Aadhaar-enabled cash withdrawal.",
|
|
22873
22784
|
"branches": [
|
|
22874
22785
|
{
|
|
22875
|
-
"
|
|
22786
|
+
"onStatus": 0,
|
|
22876
22787
|
"goto": "done"
|
|
22877
22788
|
}
|
|
22878
22789
|
]
|