1. Webhooks
Vrtx Docs
  • Auth
    • Token
      POST
  • Onboarding
    • Start onboarding
      POST
    • Verify onboarding OTP
      POST
    • Resend onboarding OTP
      POST
    • Get session status
      GET
    • Initiate Nafath
      POST
    • Cancels session
      POST
    • Complete customer info
      POST
  • Webhooks
    • Process Nafath webhook
      POST
    • Process Faceki webhook
      POST
    • Process T2 webhook
      POST
  • Wallet
    • Change mobile number from profile settings
      • Change mobile number
      • Verify mobile number change OTP
      • Get mobile change status
    • Change mobile number from login screen
      • Change mobile number
      • Verify mobile number change OTP
      • Initiate Nafath
      • Get mobile number change status
  • Businesses
    • Create business
      POST
  • Transactions
    • Business Accounts
      • Get business account balance
      • Get transaction details
      • List business transactions
    • Wallet Accounts
      • Get wallet balance
      • List wallet transactions
  • Payouts
    • Create payout
      POST
    • Get payout status
      GET
    • Create bulk payout
      POST
    • Get bulk payout status
      GET
    • Get batch report
      GET
  • Cards
    • Issuance
      • Issue card
      • Get card issuance
      • Complete card issuance
      • Verify card issuance OTP
      • Convert virtual to physical
      • Verify card conversion OTP
    • Management
      • Get card
      • Change card status
      • Set or update card PIN
      • Verify card PIN OTP
      • Activate physical card
      • Verify activation OTP
      • Display sensitive data
      • Verify display sensitive data OTP
  • cards
    • Initiate card replacement
    • Verify OTP and complete card replacement
Open-Loop-v2Closed-loop V2Card Simulatoropen-loop-test
Open-Loop-v2Closed-loop V2Card Simulatoropen-loop-test
  1. Webhooks

Process T2 webhook

POST
/webhooks/t2
Last modified:2025-12-02 10:06:51
Processes T2 (RiCH) voice transaction and DLR webhooks to update IVR operation status.
This endpoint receives webhook notifications from RiCH when voice transactions and delivery reports
are processed. It maps the status codes according to RiCH specifications and prepares data for
the processIVR RPC job.
Status Code Mapping (per RiCH specifications):
0 - Pending: Call has been queued but not yet attempted
1 - Sent: Call attempt has been initiated
2 - Answer: Call was successfully answered by recipient ✅ (SUCCESS)
3 - Busy: Recipient line was busy
4 - No Answer: Call rang but was not answered
5 - Cancel: Call was cancelled before completion
6 - Congestion: Network congestion prevented call completion
7 - CHANUNAVAIL: Channel unavailable for the call
8 - DONTCALL: Recipient is on do-not-call list
9 - TORTURE: Call was rejected due to system protection
10 - INVALIDARGS: Invalid arguments provided for the call
11 - Unknown: Status could not be determined
Expected Response:
HTTP 200 OK: Processing completed successfully - RiCH will not retry
HTTP 500 Error: Processing failed - RiCH will resend the same data next time
Per RiCH specifications: "RiCH expects HTTP 200 if everything processes well;
otherwise, RiCH will send the same data next time"
Processing Flow:
1.
Receives exact payload structure as per RiCH specifications
2.
Maps status codes to business logic outcomes
3.
Prepares IVRResult objects with userId and success status
4.
Queues data for processIVR RPC job (TODO: implement RPC contract)

Request

Body Params application/jsonRequired

Examples

Responses

🟢200Success
application/json
Direct IVR result or null if no results
Body

🔴500500
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST '/webhooks/t2' \
--header 'Content-Type: application/json' \
--data-raw '{
    "Transactions": [
        {
            "Voice": {
                "Id": "550e8400-e29b-41d4-a716-446655440000",
                "UserId": "660e8400-e29b-41d4-a716-446655440001",
                "Username": "vrtx_user",
                "IvrId": "770e8400-e29b-41d4-a716-446655440002",
                "CreatedDate": "2025-11-20T10:30:00Z",
                "Priority": 1,
                "RecipientCount": 1,
                "ReferenceId": "REF123456",
                "Sender": "966500000000",
                "Data": "IVR campaign data",
                "EstimatedTotalCost": 0.5,
                "EstimatedCostPerRecipient": 0.5
            },
            "Recipients": [
                {
                    "Id": "880e8400-e29b-41d4-a716-446655440003",
                    "VoiceId": "550e8400-e29b-41d4-a716-446655440000",
                    "EstimatedCost": 0.5,
                    "Data": "Customer data",
                    "Recipient": "966501234567",
                    "ReferenceId": "REF123456",
                    "Dtmf": "1",
                    "Status": 2
                }
            ]
        }
    ],
    "Dlrs": [
        {
            "RecipientId": "880e8400-e29b-41d4-a716-446655440003",
            "ReferenceId": "REF123456",
            "Priority": 1,
            "Duration": 45,
            "Dtmf": "1",
            "Cost": 0.5,
            "Status": 2,
            "StatusDate": "2025-11-20T10:31:00Z"
        }
    ]
}'
Response Response Example
200 - Example 1
{
    "user_id": "string",
    "is_success": true,
    "t2_status": "string"
}
Modified at 2025-12-02 10:06:51
Previous
Process Faceki webhook
Next
Change mobile number
Built with