# subscriptionBillingAttempt - admin-graphql - QUERY Version: 2024-10 ## Description Returns a SubscriptionBillingAttempt by ID. ### Access Scopes ## Arguments * [id](/docs/api/admin-graphql/2024-10/scalars/ID): ID! - The ID of the SubscriptionBillingAttempt to return. ## Returns * [completedAt](/docs/api/admin-graphql/2024-10/scalars/DateTime): DateTime The date and time when the billing attempt was completed. * [createdAt](/docs/api/admin-graphql/2024-10/scalars/DateTime): DateTime! The date and time when the billing attempt was created. * [errorCode](/docs/api/admin-graphql/2024-10/enums/SubscriptionBillingAttemptErrorCode): SubscriptionBillingAttemptErrorCode A code corresponding to a payment error during processing. * [errorMessage](/docs/api/admin-graphql/2024-10/scalars/String): String A message describing a payment error during processing. * [id](/docs/api/admin-graphql/2024-10/scalars/ID): ID! A globally-unique ID. * [idempotencyKey](/docs/api/admin-graphql/2024-10/scalars/String): String! A unique key generated by the client to avoid duplicate payments. * [nextActionUrl](/docs/api/admin-graphql/2024-10/scalars/URL): URL The URL where the customer needs to be redirected so they can complete the 3D Secure payment flow. * [order](/docs/api/admin-graphql/2024-10/objects/Order): Order The result of this billing attempt if completed successfully. * [originTime](/docs/api/admin-graphql/2024-10/scalars/DateTime): DateTime The date and time used to calculate fulfillment intervals for a billing attempt that successfully completed after the current anchor date. To prevent fulfillment from being pushed to the next anchor date, this field can override the billing attempt date. * [paymentGroupId](/docs/api/admin-graphql/2024-10/scalars/String): String The reference shared between retried payment attempts. * [paymentSessionId](/docs/api/admin-graphql/2024-10/scalars/String): String The reference shared between payment attempts with similar payment details. * [ready](/docs/api/admin-graphql/2024-10/scalars/Boolean): Boolean! Whether the billing attempt is still processing. * [subscriptionContract](/docs/api/admin-graphql/2024-10/objects/SubscriptionContract): SubscriptionContract! The subscription contract. ## Examples ### Query for a subscription billing attempt Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"query findBillingAttempt($subscriptionBillingAttempt: ID!) { subscriptionBillingAttempt(id: $subscriptionBillingAttempt) { id nextActionUrl idempotencyKey ready order { id } subscriptionContract { id } errorMessage errorCode } }\",\n \"variables\": {\n \"subscriptionBillingAttempt\": \"gid://shopify/SubscriptionBillingAttempt/693432112\"\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `query findBillingAttempt($subscriptionBillingAttempt: ID!) {\n subscriptionBillingAttempt(id: $subscriptionBillingAttempt) {\n id\n nextActionUrl\n idempotencyKey\n ready\n order {\n id\n }\n subscriptionContract {\n id\n }\n errorMessage\n errorCode\n }\n }`,\n \"variables\": {\n \"subscriptionBillingAttempt\": \"gid://shopify/SubscriptionBillingAttempt/693432112\"\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n query findBillingAttempt($subscriptionBillingAttempt: ID!) {\n subscriptionBillingAttempt(id: $subscriptionBillingAttempt) {\n id\n nextActionUrl\n idempotencyKey\n ready\n order {\n id\n }\n subscriptionContract {\n id\n }\n errorMessage\n errorCode\n }\n }\nQUERY\n\nvariables = {\n \"subscriptionBillingAttempt\": \"gid://shopify/SubscriptionBillingAttempt/693432112\"\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n query findBillingAttempt($subscriptionBillingAttempt: ID!) {\n subscriptionBillingAttempt(id: $subscriptionBillingAttempt) {\n id\n nextActionUrl\n idempotencyKey\n ready\n order {\n id\n }\n subscriptionContract {\n id\n }\n errorMessage\n errorCode\n }\n }`,\n {\n variables: {\n \"subscriptionBillingAttempt\": \"gid://shopify/SubscriptionBillingAttempt/693432112\"\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "query findBillingAttempt($subscriptionBillingAttempt: ID!) {\n subscriptionBillingAttempt(id: $subscriptionBillingAttempt) {\n id\n nextActionUrl\n idempotencyKey\n ready\n order {\n id\n }\n subscriptionContract {\n id\n }\n errorMessage\n errorCode\n }\n}" #### Graphql Input { "subscriptionBillingAttempt": "gid://shopify/SubscriptionBillingAttempt/693432112" } #### Graphql Response { "data": { "subscriptionBillingAttempt": { "id": "gid://shopify/SubscriptionBillingAttempt/693432112", "nextActionUrl": null, "idempotencyKey": "unique-token", "ready": true, "order": { "id": "gid://shopify/Order/148977776" }, "subscriptionContract": { "id": "gid://shopify/SubscriptionContract/593791907" }, "errorMessage": null, "errorCode": null } } }