---
title: "Retrieve a card-on-file enrollment status"
method: GET
path: "/subscription-intents/{id}/status"
tags: ["Subscription Intents"]
---

# Retrieve a card-on-file enrollment status

`GET /subscription-intents/{id}/status`

## Request

- The document declares no server URL.
- Auth: none declared. Required headers: `ApiKey`, `MerchantId`, `Environment`

Resolves how an enrollment ended, at any point after its link was issued — so "the payer abandoned it", "it was refused" and "it broke on our side" are distinguishable. Enrollments created before this endpoint shipped have no attempt record and still answer 404.

## Path parameters

- `id` string, required

## Headers

- `ApiKey` string, required
- `MerchantId` string, required
- `Environment` 'live' | 'sandbox', required

## Response `200`

- EnrollmentStatusResponseDto
  - `paymentId` string, required: Id of the underlying enrollment payment, as returned by POST /subscription-intents.
  - `status` 'successful' | 'failed' | 'pending' | 'action_required', required: "pending" while the enrollment link has been issued but nothing came back yet, "action_required" once the payer has been redirected to the card issuer's page, "successful" once the subscription has actually been recorded, and "failed" when the enrollment was refused or could not be recorded. A payer who never completes the page stays "action_required" — it is never reported as "failed".
  - `failureCause` PaymentFailureCauseDto
    - `code` 'internal_error' | 'service_unavailable' | 'unknown_reason' | 'customer_account_locked' | 'customer_insufficient_funds' | 'authentication_failed' | 'authentication_timeout' | 'issuer_authentication_unavailable' | 'timeout' | 'bad_parameters' | 'forbidden_by_provider' | 'too_many_request' | 'duplicate_request' | 'consent_reference_in_use' | 'canceled_by_customer' | 'canceled' | 'fraud_suspicion' | 'unsupported_currency' | 'payer_quota_exceeded' | 'invalid_payment_processor' | 'invalid_amount' | 'recipient_unavailable' | 'msisdn_invalid' | 'card_expired' | 'card_declined' | 'card_stolen' | 'card_refused' | 'card_invalid' | 'card_cvn_invalid' | 'address_verification_failed' | 'payment_limit_reached' | 'reconciliation_failure', required: Unique code representing the failure cause for the payment.
    - `message` string, required: Human readable message explaining the failure cause. This message can be displayed to the customer.
    - `params` string[]: List of parameters causing the payment failure in case of invalid parameters
  - `subscriptionId` number: Present once status is "successful": the subscription id to use with /subscriptions endpoints (charge, cancel, suspend, transactions).
  - `createdAt` string, date-time, required: When the enrollment link was issued.
  - `updatedAt` string, date-time, required: When the enrollment last changed state.

## Other responses

- `401`: Wrong credentials
- `403`: The merchant is closed.
- `404`: No enrollment with this id belongs to the authenticated merchant in this mode.
- `429`: ThrottlerException: Too Many Requests
- `500`: Internal error

## Changes

- **2026-11-03** `f6d3f87df5e0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hub2/apis/hub2-service-api/changes/subscription-intents/:id/status/get.md)

---

[API](https://skmtc.dev/hub2/apis/hub2-service-api.md) - [All operations](https://skmtc.dev/hub2/apis/hub2-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hub2/apis/hub2-service-api/revisions/f6d3f87df5e0?raw)
