Weav Docsv1

API reference / Withdrawals

Retrieve a withdrawal

GET/v1/withdrawals/{reference_id}

The amount leaves your balance when the withdrawal is requested. If it fails, a WITHDRAWAL_RETURNED ledger entry puts it back.

When it arrives

  • InstaPay: right away.
  • PESONet: credited in batches on banking days. Sent from 4:00 PM the day before to 10:00 AM: credited from 10:40 AM. Sent from 10:00 AM to 1:00 PM: from 1:40 PM. Sent from 1:00 PM to 4:00 PM: from 4:40 PM.
  • Sent on a Friday after 4:00 PM, or on a Saturday or Sunday: credited the next Monday, from 10:40 AM. Check at the end of that day before contacting support.

Path parameters

  • reference_idstringRequired
    Pattern: ^WD[0-9A-Z]{12}$

Headers

  • AuthorizationstringRequired
    Bearer plus your API key. See Authentication.

Responses

200 OK

The withdrawal.

What data holds
  • withdrawalobject
    15 fields in withdrawal
    • reference_idstring
    • currencystring
      ISO 4217. PHP today; more as they're enabled for your account.
      One of: PHP
    • amountnumber
    • feenumber | null
    • totalnumber | null
      amount plus fee.
    • statusstring
      PENDING, FOR_SETTLEMENT, COMPLETED or FAILED.
      One of: PENDING FOR_SETTLEMENT COMPLETED FAILED
    • railstring | null
      INSTAPAY (real time) for 50,000.00 or less; PESONET (batch, not real time) above that, or when the bank isn't on InstaPay. Null for withdrawals made before rails were recorded.
      One of: INSTAPAY PESONET
    • provider_reference_idstring | null
      The bank partner's transfer reference. Null until known.
    • channel_reference_idstring | null
      The InstaPay or PESONet reference. Null until known.
    • destinationobject
      bank_name, account_name, account_number_last4. Never the full account number.
      3 fields in destination
      • bank_namestring
      • account_namestring
      • account_number_last4string
    • failureobject | null
      code and message when the withdrawal failed. code can be null.
      2 fields in failure
      • codestring | null
      • messagestring
    • requested_atstring (date-time)
    • completed_atstring (date-time) | null
    • failed_atstring (date-time) | null
    • updated_atstring (date-time)

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 withdrawal

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/withdrawals/WD8H2K4M6P9QRT \
    -H "Authorization: Bearer $WEAV_API_KEY"
{
    "code": "2000000",
    "success": true,
    "message": "OK",
    "data": {
        "withdrawal": {
            "reference_id": "WD2H6J9K3L7M4N",
            "currency": "PHP",
            "amount": 119000.0,
            "fee": 10.0,
            "total": 119010.0,
            "status": "FOR_SETTLEMENT",
            "rail": "PESONET",
            "provider_reference_id": null,
            "channel_reference_id": null,
            "destination": {
                "bank_name": "Sample Bank",
                "account_name": "Sample Store Inc.",
                "account_number_last4": "4821"
            },
            "failure": null,
            "requested_at": "2026-10-25T14:05:00+08:00",
            "completed_at": null,
            "failed_at": null,
            "updated_at": "2026-10-25T14:30:00+08:00"
        }
    }
}