Polling / status endpoint: returns the current state of a reserve funding request by its externalRequestId — status (Pending / Approved / Rejected) plus, for a completed decision, the processingResult (Approved) or the rejection comment (Rejected). This is the authoritative reconciliation path complementing the best-effort decision callback. Unknown externalRequestId returns HTTP 404. Requires the same role option as the submit endpoint (otherwise HTTP 403); missing or invalid credentials return HTTP 401.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Get Reserve Funding Request Status

GET /api/v1/reserve-funding/requests/{externalRequestId}

Reads the current state of a previously submitted reserve funding request. This is the reconciliation path — the only authoritative source of status. The decision callback (sent when a Netevia employee approves or rejects a request) is best-effort and may never arrive, so this endpoint is worth polling on a schedule regardless of whether you also receive callbacks.

Use this together with POST /api/v1/reserve-funding/requests, which creates the request this endpoint reads back.

Authentication

Basic HTTP authentication. Requires the same Reserve Funding API access permission and manage-reserve-funding-requests module as the submit endpoint, otherwise 403.

Path parameter

ParameterTypeRequiredNotes
externalRequestIdstringRequiredThe reference you supplied on submit. Trimmed before lookup, but not otherwise normalized. URL-encode it if it contains anything outside A–Z a–z 0–9 - _ ..

Scoping

You can only read requests submitted by your own API user. A request submitted by a different integrator returns 404, exactly like an unknown reference — an unknown id and someone else's id are deliberately indistinguishable, so a 404 does not by itself confirm the reference was never submitted at all.

Response

200 — Pending

{
  "data": {
    "internalRequestId": "HQ-RF-REQ-101",
    "externalRequestId": "RF-2026-09-0001",
    "status": "Pending"
  },
  "requestId": 407190,
  "success": true
}

200 — Approved, downstream not yet finished

{
  "data": {
    "internalRequestId": "HQ-RF-REQ-102",
    "externalRequestId": "RF-2026-09-0002",
    "status": "Approved",
    "processedBy": "Maxim Rikhm",
    "processedAt": "2026-09-11T12:08:49Z"
  },
  "requestId": 407191,
  "success": true
}

200 — Approved, with processing result

{
  "data": {
    "internalRequestId": "HQ-RF-REQ-102",
    "externalRequestId": "RF-2026-09-0002",
    "status": "Approved",
    "processedBy": "Maxim Rikhm",
    "processedAt": "2026-09-11T12:08:49Z",
    "processingResult": { "status": "Success", "errorCode": null, "message": null }
  },
  "requestId": 407192,
  "success": true
}

200 — Rejected

{
  "data": {
    "internalRequestId": "HQ-RF-REQ-103",
    "externalRequestId": "RF-2026-09-0003",
    "status": "Rejected",
    "processedBy": "Maxim Rikhm",
    "processedAt": "2026-09-11T12:08:43Z",
    "comment": "Signed agreement does not match the requested ceiling."
  },
  "requestId": 407193,
  "success": true
}

Response fields

Decision fields are absent, not null, while a request is still pending.

FieldPresent whenMeaning
internalRequestIdAlwaysThe same HQ-RF-REQ-<n> returned by the POST and carried by the decision callback. Identical across all three.
statusAlwaysPending, Approved, or Rejected. Terminal once decided — a rejected request is never reopened; recovering means submitting a new request under a new externalRequestId.
processedByAfter a decisionFull name of the Netevia reviewer who decided.
processedAtAfter a decisionISO-8601 timestamp in UTC (trailing Z). Compare against UTC, not local time.
commentRejected onlyThe reviewer's free-text reason, up to 1024 characters. Mandatory on the Netevia side, so a rejection always carries one.
processingResultApproved only, and only once downstream has runWhether the reserve was actually created after approval. Absent until downstream processing finishes — a freshly approved request can briefly return Approved with no processingResult at all.

processingResult

status is Success or Failed.

  • On success: errorCode and message are both null.
  • On failure: errorCode is SETTINGS_CREATION_FAILED and message is "Failed to create Reserve Funding Settings in merchant profile."

An Approved status alone does not mean the reserve was created — check processingResult. A Failed result means the decision stands but nothing was created; this needs a call to Netevia, quoting internalRequestId. A common underlying cause is a mismatch between the funding department's bank and the merchant's bank, which is not checked at submit time.

404 — Unknown reference

{
  "requestId": 407185,
  "success": false,
  "error": "Reserve funding request not found."
}

Three usual causes:

  1. The reference doesn't match character-for-character (it's trimmed, but not otherwise normalized).
  2. It contains characters outside A–Z a–z 0–9 - _ . and wasn't URL-encoded.
  3. It was submitted by a different API user — see Scoping above.

Recommended usage

Poll this endpoint on a schedule rather than relying solely on the decision callback: the callback is delivered best-effort (an initial attempt plus one requeue), and a decision is never rolled back because a callback failed to arrive. If your callback endpoint was briefly down, this is the only way to learn what happened.

OpenAPI definition

{
  "openapi": "3.0.0",
  "info": {
    "version": "v1",
    "title": "Netevia HQ | API Documentation",
    "description": "Netevia HQ | API Documentation"
  },
  "paths": {
    "/api/v1/reserve-funding/requests/{externalRequestId}": {
      "get": {
        "tags": ["ReserveFundingApi"],
        "summary": "Get Reserve Funding Request Status",
        "operationId": "ReserveFundingApi_GetReserveFundingRequestStatus",
        "parameters": [
          {
            "name": "externalRequestId",
            "in": "path",
            "description": "The external service's unique request id",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { "schema": { "type": "object" } },
              "text/json": { "schema": { "type": "object" } },
              "application/xml": { "schema": { "type": "object" } },
              "text/xml": { "schema": { "type": "object" } }
            }
          }
        }
      }
    }
  },
  "security": [{ "Basic": [] }],
  "servers": [{ "url": "https://hq.staging.netevia.dev" }],
  "components": {
    "securitySchemes": {
      "Basic": { "type": "http", "description": "Basic HTTP Authentication", "scheme": "basic" }
    }
  }
}
Path Params
string
required

The external service's unique request id

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Response

Language
Credentials
Basic
base64
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/json