api:invalid_key | No | The publishable key is missing or not a string. | Pass your publishable key (r1pk_prod_, r1pk_test_ or r1pk_mock_*). |
api:secret_key_used | No | A secret key (r1sk_*) was passed to the browser SDK. | Use your publishable key. Rotate the secret key if it was shipped to browsers. |
api:test_key_in_prod_build | No | An r1pk_test_* key was used with the production bundle (js.radiumone.io). | Use an r1pk_prod_* key, or load the sandbox bundle (js-sandbox.radiumone.io) for test keys. |
api:prod_key_in_staging_build | No | An r1pk_prod_* key was used with the sandbox bundle. | Use a test or mock key with the sandbox bundle, or load the production bundle. |
api:invalid_key_format | No | The key prefix is not valid for this bundle, or a mock key suffix is not 1-32 characters of a-z, 0-9, _ or -. | Check the key for typos and that it matches the bundle’s channel. |
element:duplicate | No | An Element of the same type already exists in this Elements group. | Destroy the existing Element first, or reuse it via Elements.getElement(). |
element:insecure_context | No | The page is not a secure context (crypto.randomUUID unavailable). | Serve the checkout page over HTTPS. |
element:destroyed | No | mount() was called on a destroyed Element. | Create a new Element with Elements.create(). |
element:container_not_found | No | The selector passed to mount() matches no element. | Mount after the container is in the DOM; check the selector. |
element:not_mounted | No | submit() was called while the card Element is not mounted. | Mount the Element and wait for its ready event before submitting. |
messenger:destroyed | No | The Element was unmounted or destroyed while submit() was waiting for the iframe. | Keep the payment form mounted until submit() settles; remount and submit again. |
network:request_timeout | No | The card iframe did not answer within 55 seconds (for example it failed to boot or was blocked). | Offer a retry; if it repeats, check that js.radiumone.io is not blocked by CSP or extensions. |
submit:legacy_signature | No | submit() was called with the pre-2.0 form submit(sessionId, sessionSecret). | Call submit(). |
submit:invalid_context | No | The submit() argument is not an object. | Pass . |
submit:missing_session_id | No | sessionId is missing or empty. | Pass session_id from POST /gateway/v1/sessions. |
submit:missing_session_secret | No | sessionSecret is missing or empty. | Pass session_secret from POST /gateway/v1/sessions. |
submit:missing_pubkey_jws | No | pubkeyJws is missing or not a compact JWS (three base64url segments). | Pass pubkey_jws from POST /gateway/v1/sessions unchanged (do not parse or re-serialise it). |
submit:in_progress | No | Another submit() on the same Elements group has not settled. | Disable the pay button while submitting; ignore the duplicate call. |
submit:rate_limited | No | submit() was called within 1 second of a successful submit(). | Wait at least 1 second; normally a double-click after success. |
elements:no_elements | No | submit() was called before any Element was created. | Create and mount a card Element first. |
required | No | A created Element is empty. ElementsError.field names the Element type. | Ask the shopper to complete the field; gate the pay button on the change event’s valid flag. |
elements:missing_element | No | Split fields were created without a cardNumber Element. | Create a cardNumber Element (or use the combined card Element). |
bind:invalid_response | No | The bind succeeded but the response contained no token. | Treat as a failed payment attempt; create a new session and retry. Contact support if it repeats. |
bind:failed | No | An unexpected non-SDK exception occurred during submit(). | Offer a retry; report with the error message if it repeats. |