iPhone automation setup

D3Pay confirms a deposit when your receiving bank account's credit SMS arrives on an iPhone. An iOS Shortcuts personal automation forwards that SMS to the D3Pay webhook. No app install is needed.

Requirements: the iPhone holds the SIM that receives the bank's credit alerts, runs iOS 17 or later, and has internet access.

1. Values you need

FieldValue
Webhook URLhttps://admin.34-14-186-105.sslip.io/api/webhooks/ios
MethodPOST
Header nameX-D3Pay-Secret
Header value (secret)d3p_ios_cd56951c18142b5d3c82c62dfaa9137f2630
Content typeapplication/json

The secret authenticates your phone. Anyone holding it can post fake payments, so do not share it publicly.

2. Create the automation

  1. Open the Shortcuts app and go to the Automation tab.
  2. Tap + and choose Message.
  3. Under Message Contains, enter a word that appears in every credit alert, such as credited. Optionally set Sender to your bank's SMS header.
  4. Select Run Immediately, then tap Next.
  5. Tap New Blank Automation and add the action Get Contents of URL.

3. Configure Get Contents of URL

  1. URL: https://admin.34-14-186-105.sslip.io/api/webhooks/ios
  2. Tap Show More, then set Method to POST.
  3. Headers, add two:
    • X-D3Pay-Secret = d3p_ios_cd56951c18142b5d3c82c62dfaa9137f2630
    • Content-Type = application/json
  4. Request Body: choose JSON, then add two Text fields:
    • message = the Shortcut Input variable. Tap the field, pick Shortcut Input, and set it to Content.
    • sender = the Shortcut Input variable set to Sender.
  5. Tap Done.

The request body should look like this:

{
  "message": "Rs 500.00 credited to A/c XX1234 on 30-10-26 by UPI Ref No 630112345678",
  "sender": "VM-HDFCBK"
}

4. Turn off the prompts

Open the automation and make sure Run Immediately is selected and Notify When Run is off. Otherwise iOS asks for confirmation on every SMS and the deposit stays pending.

5. Test it from a terminal

curl -X POST "https://admin.34-14-186-105.sslip.io/api/webhooks/ios" \
  -H "X-D3Pay-Secret: d3p_ios_cd56951c18142b5d3c82c62dfaa9137f2630" \
  -H "Content-Type: application/json" \
  -d '{"message":"Rs 500.00 credited to A/c XX1234 by UPI Ref No 630112345678","sender":"TEST"}'

Possible responses:

resultMeaning
MATCHEDA pending deposit with that exact amount was found and the wallet was credited.
UNMATCHEDA valid credit arrived but no pending deposit has that exact amount. See Bank events.
DUPLICATEThe same alert (same UTR) was already processed. Nothing was credited again.
IGNOREDNo UPI ref id in the message, or it was a debit alert.

A 401 means the secret is wrong. A 403 means the source is switched off on the Sources page.

What D3Pay checks

Only two things decide a payment: the amount and the UPI ref id (UTR) in the message. The sender name, UPI ID and wording are not checked.

How duplicates are prevented

  • Only one pending deposit can exist for a given amount at a time, so each SMS maps to exactly one deposit. A second user asking for a busy amount is told to wait or choose another amount.
  • An alert is stored once per UPI ref id. Sending it twice, even from two channels, credits once.
  • A UTR can settle only one deposit, and a deposit can be credited only once.

Troubleshooting

  • Nothing happens: open Shortcuts, select the automation, and run it manually to see the error.
  • Deposit stays pending: check the Bank events page. If the event is UNMATCHED, the bank SMS amount differs from the requested amount.
  • Phone is locked or offline: iOS still runs Run Immediately automations on message arrival. Keep mobile data on.
  • Adding Gmail or Android later: enable the source on the Sources page and post to /api/webhooks/gmail or /api/webhooks/android with that source's own secret.