Status Webhook
The MoneyGram Status Webhook allows receiving institution to asynchronously notify MoneyGram of transaction status changes. All updates are submitted by authorised receiving institutions via the SOAP updateStatus operation. The interface is idempotent, enabling receiving institutions to safely retry the same payload until MoneyGram confirms receipt.
Supported status updates
Pending
Transaction acknowledged; settlement in progress.
Received
Funds successfully credited to the beneficiary.
Rejected
Transaction could not be fulfilled; funds reversed to the sender.
Endpoint hosts
| Environment | Host |
|---|---|
| UAT | https://extadpartner.moneygram.com |
| Production | https://adpartner.moneygram.com |
HTTP headers
| Header | Value |
|---|---|
Content-Type | text/xml;charset=UTF-8 |
SOAPAction | "urn:PartnerConnect#updateStatus" |
Authorization | Basic base64(username:password) |
Host | As per environment noted above. |
Request fields
| XML tag | Required | Type | Description |
|---|---|---|---|
<mgiTransactionID> | Required | String | MoneyGram transaction reference generated during the Fund Transfer request. Must match transaction.mgiTransactionId. |
<partnerTransactionID> | Required | String | Unique partner transaction reference. |
<partnerReasonCode> | Required | Numeric (4 digits) | Partner status / reason code. |
<partnerReasonMessage> | Required | String (1–255) | Free-text message for audit and logging. |
Example request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:par="http://moneygram.com/service/PartnerConnectService"> <soapenv:Header/> <soapenv:Body> <par:updateStatus> <par:status> <par:mgiTransactionID>85008029000003252021</par:mgiTransactionID> <par:partnerTransactionID>7532462</par:partnerTransactionID> <par:partnerReasonCode>1504</par:partnerReasonCode> <par:partnerReasonMessage>Credited Successfully</par:partnerReasonMessage> </par:status> </par:updateStatus> </soapenv:Body> </soapenv:Envelope>
Partner reason codes
Pending
| Code | Scenario | MoneyGram action |
|---|---|---|
1200 | Transaction acknowledged — delivery in progress | Awaits final status. |
1201 | OFAC hold | Funds reversed to the sender immediately. |
1205 | Other pending | Funds reversed to the sender immediately. |
1213 | Pending wallet setup | Awaits final status. |
1214 | Pending receiver confirmation | Awaits final status. |
1215 | Communication error with partner | Awaits final status. |
1216 | Pending KYC process | Awaits final status. |
Received
| Code | Scenario | MoneyGram action |
|---|---|---|
1504 | Transaction delivered — confirmed | Delivery notification sent to the sender. |
1505 | Transaction delivered — assumed | Delivery assumed; may later move to rejected if updated by a downstream system. |
Rejected
All rejection codes trigger immediate reversal of funds to the sender.
| Code | Scenario |
|---|---|
1401 | Account closed |
1402 | Account unavailable for deposit |
1404 | Invalid account number |
1406 | Account no longer active |
1409 | Other rejected |
1410 | Invalid transaction amount |
1424 | Invalid phone number |
1425 | Invalid email address |
1426 | Blocked account |
1427 | Business account |
1428 | Minor account |
1429 | Joint account |
1430 | Restricted account |
1431 | Mobile wallet not set up |
1432 | Invalid / insufficient ID |
1433 | Transaction declined by receiver |
1434 | Transaction expired |
1435 | Insufficient prefund |
1436 | Limit exceeded |
1437 | Regulatory reason |
1438 | Commercial account |
1439 | Account name mismatch |
1440 | Account exceeds monthly accumulated amount |
1441 | Account exceeds weekly accumulated amount |
1442 | Account exceeds daily accumulated amount |
1443 | Transaction amount over limit |
1444 | Invalid receiver ID |
1445 | Transaction payment reversed |
1446 | Invalid account currency |
Responses
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:par="http://moneygram.com/service/PartnerConnectService"> <soapenv:Header/> <soapenv:Body> <par:updateStatusResponse/> </soapenv:Body> </soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:par="http://moneygram.com/service/PartnerConnectService"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server</faultcode> <faultstring>User input error</faultstring> <detail> <par:updateStatusFault> <errorCode>9500</errorCode> <errorMessage>Invalid State Transition: Transaction 70972240 is in state REJ. Requested state is RECEIVED.</errorMessage> </par:updateStatusFault> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:client</faultcode> <faultstring>Authentication Failed</faultstring> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server</faultcode> <faultstring>Transaction status not updated. Internal system error</faultstring> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
Fault codes
| Code | Scenario | Fault message | Expected partner handling |
|---|---|---|---|
soapenv:client | Username / password mismatch | Authentication Failed | Push callback to error queue; contact MGI Support; retry only after updated credentials are confirmed. |
soapenv:Server | Internal server error | Transaction status not updated. Internal system error | Retry until successful. |
9000 | Previous status unknown | Unable to update transaction, previous notification code is Unknown | Push to error queue and await MGI guidance. |
9100 | Transaction not found | Transaction does not exist | Contact MGI Support. |
9200 | Security issue | Agent is not authorized | Verify credentials and contact MGI Support if needed. |
9300 | Unknown reason code | Reason Code is not valid | Retry with the correct reason code. |
9400 | Already processed | Transaction is already received | Treat as success. Do not retry. |
9500 | Invalid state transition | Invalid State Transition | Raise alert and investigate immediately. |
9600 | Communication / server issue treated as success | Varies | Treat as success if so instructed in the integration agreement. |
Idempotency
updateStatus operation is idempotent.
Partners may safely resend the same payload when the request times out, the response is not received, a communication failure occurs, or a temporary server issue occurs. Retries must use identical transaction identifiers and the same status payload.
Retry policy
When a callback fails due to timeout, communication failure, or server error, the partner must retry the same payload for up to 24 hours using the following intervals:
| Attempt | Delay |
|---|---|
| 1 | 2 minutes |
| 2 | 10 minutes |
| 3 | 30 minutes |
| 4 | 60 minutes |
| 5 | 2 hours |
| 6 | 4 hours |
| 7 | 8 hours |
| 8 | 12 hours |
| 9 | 16 hours |
| 10 | 20 hours |
| 11 | 24 hours |
If the callback continues to fail after 24 hours, the partner must contact MGI Support.
- Retry only with the identical payload.
- Fault codes
9400or9600are treated as successful. - Manual callback support — including bulk replay — must be available on request from MoneyGram Operations.
Implementation expectations
| Capability | Expectation |
|---|---|
| Authentication | Use MoneyGram-issued credentials. |
| Idempotency | Safe retry of identical callback payloads. |
| Status mapping | Send only bilaterally agreed reason codes. |
| Transaction linking | mgiTransactionID must match the original Fund Transfer transaction. |
| Retry support | Retry failed callbacks for up to 24 hours per the defined schedule. |
| Monitoring | Queue and monitor failed callbacks. |
| Manual operations | Support manual and bulk callback replay on request. |
Updated about 4 hours ago
