Weav Docsv1

API reference / Payments

Retrieve a payment

GET/v1/payments/{reference_id}

Reads one payment. Use it to confirm a status, for example after your customer returns from a checkout page.

A payment that belongs to another merchant, or to the other mode, returns 404.

Path parameters

  • reference_idstringRequired
    Weav's payment reference.
    Pattern: ^PY[0-9A-Z]{12}$

Headers

  • AuthorizationstringRequired
    Bearer plus your API key. See Authentication.

Responses

200 OK

The payment.

What data holds
  • paymentobject
    32 fields in payment
    • reference_idstring
    • external_reference_idstring | null
      Yours. For a checkout's payment, the checkout's (null when it has none).
    • checkout_reference_idstring | null
      The checkout this payment was started from, if any.
    • payment_method_idstring | null
      The saved payment method it was charged to, or the one it saves the card to (save_payment_method), if any.
    • provider_reference_idstring | null
      The provider's transaction ID, once the provider has one.
    • channel_reference_idstring | null
      A reference from the channel that is unique to this payment, once the payment completes. Null for channels whose numbers can repeat; those are in references.
    • referencesobject
      The provider's other numbers for this payment, keyed by type: invoice_number (the 6-digit QR Ph invoice number), receipt_number (Maya) or transaction_id (GCash). Saved once the provider confirms the payment; {} until then. They can repeat across payments: search with them, never identify a payment by one alone.
      3 fields in references
      • invoice_numberstring
      • receipt_numberstring
      • transaction_idstring
    • channelstring
      One of QR_PH, GCASH, MAYA, CARD, PAY_AND_GO, PALAWANPAY, BAYAD.
      One of: QR_PH GCASH MAYA CARD PAY_AND_GO PALAWANPAY BAYAD
    • customerobject
      The person paying, as you sent it. The email and mobile number turn null once Weav's retention period ends.
      3 fields in customer
      • namestring | null
      • emailstring | null
      • mobile_nostring | null
    • currencystring
      ISO 4217. PHP today; more as they're enabled for your account.
      One of: PHP
    • amountnumber
    • feenumber | null
      Null until a rate applies.
    • totalnumber | null
      amount plus fee, calculated by Weav. Null while fee is null.
    • fee_bearerstring
      MERCHANT, the fee comes out of amount (default). PAYER (fees on top), the customer is charged amount + fee and you receive the full amount.
      One of: MERCHANT PAYER
    • amount_chargednumber
      What the customer is charged. amount, or total when fee_bearer is PAYER.
    • amount_refundednumber
      The total refunded so far. The payment turns REFUNDED once it equals amount.
    • refundsarray of objects
      Refunds Weav recorded for this payment, oldest first. Refunds are made by Weav support on request.
      4 fields in refunds
      • reference_idstring
      • amountnumber
      • provider_reference_idstring | null
      • refunded_atstring (date-time)
    • statusstring
      PENDING, COMPLETED, FAILED, CANCELLED, REVERSED or REFUNDED. See Statuses.
      One of: PENDING COMPLETED FAILED CANCELLED REVERSED REFUNDED
    • descriptionstring | null
      As you sent it.
    • success_urlstring (uri) | null
    • cancel_urlstring (uri) | null
    • webhook_urlstring | null
      Where this payment's webhooks go, when not your webhook URL.
    • next_actionobject
      What your customer does next. type is DISPLAY_QR, REDIRECT, PAY_AT_COUNTER, or null once the payment is final. qr_string, checkout_url and payment_code are each null unless they apply. With HOSTED (the default), type is REDIRECT and checkout_url is Weav's payment page (the test checkout with a test key), for every channel. For QR Ph, qr_ph_app is the app you chose, and instructions lists the how-to-pay steps (title, description) when you asked for DIRECT.
      6 fields in next_action
      • typestring | null
        One of: DISPLAY_QR REDIRECT PAY_AT_COUNTER
      • qr_stringstring | null
        QR Ph payload to render as a QR code: error correction Q (M at minimum), a white quiet zone of at least 4 modules, and the full-color QR Ph symbol on a white box 23.81% of the code width (quiet zone excluded) in the exact center.
      • checkout_urlstring (uri) | null
      • payment_codestring | null
        For over-the-counter channels.
      • qr_ph_appstring | null
        QR Ph only. The bank or e-wallet app the steps are tailored to.
      • instructionsarray of objects | null
        QR Ph with next_action_format DIRECT only. How-to-pay steps to show the customer.
        2 fields in instructions
        • titlestring
        • descriptionstring
    • test_checkout_urlstring (uri) | null
      Test mode only: the test checkout page, where you pay, decline or let this payment expire, for every channel (a counter payment with DIRECT has no other way to finish). Anyone with the link can open it. Null in live mode.
    • failureobject | null
      code and message when the payment failed. Codes: EXPIRED, DECLINED, PROVIDER_ERROR.
      2 fields in failure
      • codestring
        One of: EXPIRED DECLINED PROVIDER_ERROR
      • messagestring
    • expires_atstring (date-time)
      When an unpaid payment fails (failure.code EXPIRED).
    • completed_atstring (date-time) | null
      When the customer paid, as the provider reports it.
    • failed_atstring (date-time) | null
      When the payment failed.
    • cancelled_atstring (date-time) | null
      When the payment was canceled.
    • reversed_atstring (date-time) | null
      When the payment was reversed.
    • created_atstring (date-time)
      When Weav created the payment.
    • updated_atstring (date-time)
      When the payment last changed.

401 Unauthorized

Missing, malformed or unknown API key (code 4010000).

403 Forbidden

The key can't make this request (code 4030000): an address outside the key's IP allowlist, a live key before your live mode is on, or an account that isn't active. A live key sent from a browser is refused (code 4030001): keep live keys on your server.

404 Not Found

Not found in this mode for your account (code 4040000).

GET

Try it: Retrieve a payment

Test mode
Authorization
Path
cURL

Uses $WEAV_API_KEY, never your key. Paste it into a terminal, or import it into Postman.

Response

Send the request to see Weav's answer here.

curl -X GET https://api.weavpayments.com/v1/payments/PY7K3Q9M2X4TBA \
    -H "Authorization: Bearer $WEAV_API_KEY"
{
    "code": "2000000",
    "success": true,
    "message": "OK",
    "data": {
        "payment": {
            "reference_id": "PY7K3Q9M2X4TBA",
            "external_reference_id": "ORD-10541",
            "checkout_reference_id": null,
            "payment_method_id": null,
            "provider_reference_id": null,
            "channel_reference_id": null,
            "references": {},
            "channel": "QR_PH",
            "customer": {
                "name": "Juan dela Cruz",
                "email": null,
                "mobile_no": null
            },
            "currency": "PHP",
            "amount": 1250.0,
            "fee": 31.25,
            "total": 1281.25,
            "fee_bearer": "MERCHANT",
            "amount_charged": 1250.0,
            "amount_refunded": 0.0,
            "refunds": [],
            "status": "COMPLETED",
            "description": "Order ORD-10541",
            "success_url": null,
            "cancel_url": null,
            "webhook_url": null,
            "next_action": {
                "type": null,
                "qr_string": null,
                "checkout_url": null,
                "payment_code": null,
                "qr_ph_app": null,
                "instructions": null
            },
            "test_checkout_url": null,
            "failure": null,
            "expires_at": "2026-10-26T10:27:00+08:00",
            "completed_at": "2026-10-26T10:15:40+08:00",
            "failed_at": null,
            "cancelled_at": null,
            "reversed_at": null,
            "created_at": "2026-10-26T10:12:00+08:00",
            "updated_at": "2026-10-26T10:15:41+08:00"
        }
    }
}