> For the complete documentation index, see [llms.txt](https://docs.maibmerchants.md/request-to-pay/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maibmerchants.md/request-to-pay/api-reference/endpoints/retrieve-the-status-of-a-payment-request.md).

# Retrieve the status of a payment request

This endpoint retrieves the current status and details of a specific Request to Pay (RTP).\
It is typically used to check the lifecycle state of a payment request, confirm reconciliation, or verify the latest status in case callback delivery is delayed.

***

### Request

**HTTP Method**: `GET`\
**Endpoint**:

```
/v2/rtp/{id}
```

**Path Parameters**

| Parameter | Type          | Description                      |
| --------- | ------------- | -------------------------------- |
| `rtpId`   | string (GUID) | RTP unique identifier (`rtpId`). |

**Headers**

```http
Authorization: Bearer {access_token}
```

**Example Request**

```bash
curl -G "https://api.maibmerchants.md/v2/rtp/123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {{access_token}}"
```

***

### Response

#### Response Parameters

| Field                 | Type                               | Description                                                                                       |
| --------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------- |
| `result`              | object                             | Response result object.                                                                           |
| `result.rtpId`        | string (GUID)                      | RTP unique identifier.                                                                            |
| `result.orderId`      | string(100)                        | Merchant-side order identifier.                                                                   |
| `result.status`       | string (enum)                      | RTP status. Possible values: `Created`, `Active`, `Cancelled`, `Accepted`, `Rejected`, `Expired`. |
| `result.amount`       | number (decimal)                   | RTP amount (fixed).                                                                               |
| `result.currency`     | string (enum)                      | Payment currency. Possible values: `MDL` (ISO 4217).                                              |
| `result.description`  | string(500)                        | Order description.                                                                                |
| `result.callbackUrl`  | string(1000)                       | HTTPS URL where the merchant receives payment data after successful payment in the Bank App.      |
| `result.redirectUrl`  | string(1000)                       | HTTPS URL where the customer is redirected after successful payment in the Bank App.              |
| `result.createdAt`    | string (datetime, ISO 8601-1:2019) | Timestamp when the RTP was created.                                                               |
| `result.updatedAt`    | string (datetime, ISO 8601-1:2019) | Timestamp of the last status update.                                                              |
| `result.expiresAt`    | string (datetime, ISO 8601-1:2019) | Timestamp when the RTP expires.                                                                   |
| `result.terminalId`   | string(100)                        | Terminal ID provided by the bank.                                                                 |
| `ok`                  | boolean                            | Request processing status. `true` if no errors, `false` if errors occurred.                       |
| `errors`              | array                              | List of errors (present only if `ok = false`).                                                    |
| `errors.errorCode`    | string                             | Error code.                                                                                       |
| `errors.errorMessage` | string                             | Error description.                                                                                |

***

#### Example Successful Response

```json
{
  "result": {
    "rtpId": "123e4567-e89b-12d3-a456-426614174000",
    "status": "Created",
    "amount": 50.00,
    "currency": "MDL",
    "description": "Order description",
    "callbackUrl": "https://example.com/callback",
    "redirectUrl": "https://example.com/success",
    "createdAt": "2029-10-22T10:32:28+03:00",
    "updatedAt": "2029-10-22T10:32:58+03:00",
    "expiresAt": "2029-10-22T10:33:28+03:00",
    "terminalId": "P011111"
  },
  "ok": true
}
```

***

### Notes & Best Practices

* Use this endpoint to **verify** the latest status or reconcile payments when callbacks are delayed.
* Always rely primarily on **callback notifications**, and use this endpoint as a secondary check.
* Store and log the `rtpId` from the create call to query status reliably.
* Avoid excessive polling; design your integration to query only when callbacks are missing or inconsistent.
