Repayment Status has Changed?

Is it possible where in a repayment transaction, merchant received first callback with transaction status as PAYMENT_SUCCESS, but subsequently received a second callback, now with a PAYMENT_EXPIRED status?

See callbacks below:

Callback #1:
Received Maya C2B notification {“canVoid”:false,“amount”:“2943”,“metadata”:{},“approvalCode”:“67312d”,“canCapture”:false,“canRefund”:false,“fundSource”:{“description”:“******7fa0”,“details”:{“firstName”:“******”,“lastName”:“******”,“profileId”:“******”,“masked”:“******”,“middleName”:“******”,“msisdn”:“******”,“email”:“******”},“id”:“edea31c7-f7a3-4e51-99e8-3905a05a7f9c”,“type”:“maya-wallet”},“isPaid”:true,“createdAt”:“2026-01-30T14:45:10.000Z”,“requestReferenceNumber”:“4c3813aa-926f-486a-a13b-b45133614aad”,“paymentTokenId”:“******”,“currency”:“PHP”,“receipt”:{“approval_code”:“67312d”,“batchNo”:“20260130”,“approvalCode”:“67312d”,“receiptNo”:“690624262684”,“transactionId”:“e337c5c5-e4ae-411e-b0a0-a4c8fe6e2b31”},“id”:“58da6db5-e4db-49ac-ae6e-bfce713f6ce9”,“receiptNumber”:“690624262684”,“status”:“PAYMENT_SUCCESS”,“updatedAt”:“2026-01-30T14:45:15.000Z”}

Callback #2:
Received Maya C2B notification {“id”:“58da6db5-e4db-49ac-ae6e-bfce713f6ce9”,“isPaid”:false,“status”:“PAYMENT_EXPIRED”,“amount”:“2943”,“currency”:“PHP”,“canVoid”:false,“canRefund”:false,“canCapture”:false,“createdAt”:“2026-01-30T13:37:50.559Z”,“updatedAt”:“2026-01-30T14:38:01.570Z”,“description”:“Charge for bunquin_julius@yahoo.com”,“requestReferenceNumber”:“4c3813aa-926f-486a-a13b-b45133614aad”}

Yes, it is possible for a repayment transaction to receive a second callback with a different status. According to the Maya Checkout documentation, a payment status can change even after being marked as PAYMENT_SUCCESS. It is considered semi-final and can still be voided or refunded. The change from PAYMENT_SUCCESS to PAYMENT_EXPIRED is plausible as it indicates the transaction was initially successful but later expired.

For Sandbox concerns and other technical implementation inquiries, please get in touch with us via:

  • Sandbox Health Page: Check real-time service status updates.
  • Maya Developer Hub Service Desk: File
    a ticket in Sandbox.

To Know More:

We value your input and would love to hear your insights. Please submit you feedback here.

Hello @renzoatos,

Thank you for sharing the webhook payloads.

To clarify: a transaction that has already reached PAYMENT_SUCCESS cannot transition to PAYMENT_EXPIRED.

  • Once a payment is completed and marked as PAYMENT_SUCCESS, it’s safe to fulfill orders, but still reversible (void/refund).

  • PAYMENT_EXPIRED applies to payment sessions or payment tokens that were not completed within their validity window. It should not occur after a confirmed PAYMENT_SUCCESS for the same finalized transaction ID.

Since both callbacks reference the same id and requestReferenceNumber, we recommend the following validations:

  • Validate the transaction directly in the Maya Business Manager
    • Check the transaction using:
      • Transaction ID (58da6db5-e4db-49ac-ae6e-bfce713f6ce9)
      • Receipt Number
      • Request Reference Number
  • Review timestamps carefully
    • In the payload you shared, the createdAt and updatedAt timestamps differ significantly between the two callbacks, which may indicate they are related to different payment attempts or token lifecycles rather than a true status reversal.

If this occurred in production, please validate the transaction in Maya Business Manager first. If further assistance is required, you may coordinate with production support through business.support@maya.ph for a detailed investigation.

Sir @genson.cerezo , thank you! your insights are the same as our internal findings. Agree on the next steps. Thanks!

1 Like

Hi Sir @genson.cerezo , is this applicable if the situation is reversed? Where a transaction was first Payment_Expired and then later a second call back was received by merchant that the same transaction is now Payment_Success?

Merchant has provided two sample transactions, we are having hard time trying to understand the cause and how to resolve.

Reference number: ec5dfead-f654-4901-8caf-5e0491134a1c
Amount: 3,145.00
Date: 02/02/2026
Callback:
Received Maya C2B notification {“id”:“d44de010-2d0a-46ff-8c34-f110ccb22308”,“isPaid”:true,“status”:“PAYMENT_SUCCESS”,“amount”:“3145.00”,“currency”:“PHP”,“canVoid”:true,“canRefund”:true,“canCapture”:false,“createdAt”:“2026-02-02T19:45:05.000Z”,“updatedAt”:“2026-02-02T19:45:19.000Z”,“fundSource”:{“type”:“maya-wallet”,“id”:“40109079-5419-4d16-92eb-b79909904fc9”,“description”:“******7fa0”,“details”:{“firstName”:“******”,“middleName”:“******”,“lastName”:“******”,“msisdn”:“******”,“email”:“******”,“profileId”:“******”,“masked”:“******”}},“metadata”:{},“receiptNumber”:“690624126177”,“requestReferenceNumber”:“ec5dfead-f654-4901-8caf-5e0491134a1c”,“paymentTokenId”:“******”,“receipt”:{“transactionId”:“19aa74b8-2c16-4250-bc7c-9d8215db0800”,“batchNo”:“20260202”,“receiptNo”:“690624126177”,“approval_code”:“ed740e”,“approvalCode”:“ed740e”},“approvalCode”:“ed740e”}

Received Maya C2B notification {“id”:“d44de010-2d0a-46ff-8c34-f110ccb22308”,“isPaid”:false,“status”:“PAYMENT_EXPIRED”,“amount”:“3145”,“currency”:“PHP”,“canVoid”:false,“canRefund”:false,“canCapture”:false,“createdAt”:“2026-02-02T11:43:22.332Z”,“updatedAt”:“2026-02-02T12:43:47.966Z”,“description”:“Charge for [redacted info]”,“requestReferenceNumber”:“ec5dfead-f654-4901-8caf-5e0491134a1c”}

Reference number: 4e70d320-48a2-4b93-9f57-4f231aa077b3
Amount: 3,699.00
Date: 10/02/2026
Callback:
Received Maya C2B notification {“id”:“2e9a31ae-591b-4fd3-8106-d4a1c4e54454”,“isPaid”:true,“status”:“PAYMENT_SUCCESS”,“amount”:“3699.00”,“currency”:“PHP”,“canVoid”:true,“canRefund”:true,“canCapture”:false,“createdAt”:“2026-02-10T12:58:59.000Z”,“updatedAt”:“2026-02-10T12:59:13.000Z”,“fundSource”:{“type”:“maya-wallet”,“id”:“c4ca1386-a686-4878-b0de-b2c39b083eda”,“description”:“******7fa0”,“details”:{“firstName”:“******”,“middleName”:“******”,“lastName”:“******”,“msisdn”:“******”,“email”:“******”,“profileId”:“******”,“masked”:“******”}},“metadata”:{},“receiptNumber”:“690624129376”,“requestReferenceNumber”:“4e70d320-48a2-4b93-9f57-4f231aa077b3”,“paymentTokenId”:“******”,“receipt”:{“transactionId”:“473b8740-2f15-4fb0-8524-e5554559d573”,“batchNo”:“20260210”,“receiptNo”:“690624129376”,“approval_code”:“6a8d42”,“approvalCode”:“6a8d42”},“approvalCode”:“6a8d42”}

Received Maya C2B notification {“id”:“2e9a31ae-591b-4fd3-8106-d4a1c4e54454”,“isPaid”:false,“status”:“PAYMENT_EXPIRED”,“amount”:“3699”,“currency”:“PHP”,“canVoid”:false,“canRefund”:false,“canCapture”:false,“createdAt”:“2026-02-10T04:57:26.344Z”,“updatedAt”:“2026-02-10T05:57:47.444Z”,“description”:“Charge for [redacted info]”,“requestReferenceNumber”:“4e70d320-48a2-4b93-9f57-4f231aa077b3”}

Hello @renzoatos, looking at the payloads you shared, although the id and requestReferenceNumber appear the same per case, the createdAt and updatedAt timestamps differ significantly. However, a proper determination requires backend validation.

That said, since this involves specific production transactions, this type of investigation goes beyond what we can fully resolve in the Developer Forum.

For proper investigation, please reach out to business.support@maya.ph and provide the following:

  • Request Reference Number
  • Transaction ID
  • Date and time
  • Merchant ID (MID)
  • Relevant server logs

They can validate the authoritative transaction state directly from the production environment.

Important Reminder

For security and privacy reasons, please avoid posting logs that contain:

  • Email addresses
  • Card/wallet details
  • Profile IDs
  • Any personally identifiable information (PII)

See also the Community Guidelines.

The Developer Forum is intended for integration and technical discussions. Detailed transaction-level investigations should always be handled through the official support channels.

If you need guidance on webhook handling logic or idempotency best practices from an integration standpoint, feel free to share (with sensitive data removed), and we’ll be glad to assist.