> For the complete documentation index, see [llms.txt](https://docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verifone.com/api-reference/open-api-references/ecommerce/secure-card-capture.md).

# Secure Card Capture

Secure Card Capture key pairs are used to encrypt cardholder data client-side (via Verifone.JS or Verifone Checkout) before it is transmitted to the API. The `public_key_alias` returned here is required on all encrypted card requests.

{% hint style="info" %}
Encrypted card data is only valid for **15 minutes** after capture. Ensure the `captureTime` is included in the JSON payload before encryption.
{% endhint %}

## Generate Key Pair

Creates a new public/private key pair and returns the public key and its alias.

## Generate Key Pair

> Generate a new public/private key pair

```json
{"openapi":"3.0.0","info":{"title":"Verifone eCommerce API","version":"2.38.1"},"servers":[{"url":"https://emea.gsc.verifone.cloud/oidc","description":"EMEA Production"},{"url":"https://us.gsc.verifone.cloud/oidc","description":"Americas Production"},{"url":"https://nz.gsc.verifone.cloud/oidc","description":"New Zealand Production"},{"url":"https://cst.test-gsc.vfims.com/oidc","description":"Global Sandbox"},{"url":"https://uscst-gb.gsc.vficloud.net/oidc","description":"Americas Sandbox"}],"security":[{"BasicAuth":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic"}},"schemas":{"CreateKeyPairResponse":{"type":"object","properties":{"public_key":{"type":"string","description":"This is the public key required to encrypt the card data at client side before sending to Greenbox"},"public_key_alias":{"type":"string","description":"Public Key Alias"},"created_at":{"type":"string","format":"date-time","description":"The time that this key was created."}},"required":["public_key","public_key_alias","created_at"]},"BadRequestV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[400],"default":400},"message":{"type":"string","enum":["At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the requests body, query for parameters appended to the requests URL, and params for templated parameters of the requests URL."],"default":"At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the requests body, query for parameters appended to the requests URL, and params for templated parameters of the requests URL."}},"required":["message"]},"UnauthorizedV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[401],"default":401},"message":{"type":"string","enum":["Access is restricted to authenticated users only. The query can't be made without a valid JWT token (check the Authorization header of your request)."],"default":"Access is restricted to authenticated users only. The query can't be made without a valid JWT token (check the Authorization header of your request)."}},"required":["message"]},"ForbiddenV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[403],"default":403},"message":{"type":"string","enum":["Insufficient permissions. Your current user roles don't allow you to perform this query. Should you believe this error to be incorrect, please contact an administrator."],"default":"Insufficient permissions. Your current user roles don't allow you to perform this query. Should you believe this error to be incorrect, please contact an administrator."}},"required":["message"]},"NotFoundV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[404],"default":404},"message":{"type":"string","enum":["The requested resource, or one of its sub-resources, can't be found. If the submitted query is valid, this error is likely to be caused by a problem with a nested resource that has been deleted or modified. Check the details property for additional insights."],"default":"The requested resource, or one of its sub-resources, can't be found. If the submitted query is valid, this error is likely to be caused by a problem with a nested resource that has been deleted or modified. Check the details property for additional insights."}},"required":["message"]},"InternalErrorV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[500],"default":500},"message":{"type":"string","enum":["Unexpected error: if the error persists, please contact an administrator, quoting the code and timestamp of this error"],"default":"Unexpected error: if the error persists, please contact an administrator, quoting the code and timestamp of this error"}},"required":["message"]}}},"paths":{"/api/v2/key":{"post":{"operationId":"keyPair","summary":"Generate Key Pair","description":"Generate a new public/private key pair","parameters":[],"responses":{"201":{"description":"Key Result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyPairResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestV2Docs"}}}},"401":{"description":"Unauthorised","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedV2Docs"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenV2Docs"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundV2Docs"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorV2Docs"}}}}},"tags":["Secure Card Capture"]}}}}
```

## List Active Key Pairs

Returns all currently active public keys. Share these with client-side integrations to encrypt card data.

## List Key Pair

> This will return the active public keys that can be shared with a merchant to encrypt card data prior to send.

```json
{"openapi":"3.0.0","info":{"title":"Verifone eCommerce API","version":"2.38.1"},"servers":[{"url":"https://emea.gsc.verifone.cloud/oidc","description":"EMEA Production"},{"url":"https://us.gsc.verifone.cloud/oidc","description":"Americas Production"},{"url":"https://nz.gsc.verifone.cloud/oidc","description":"New Zealand Production"},{"url":"https://cst.test-gsc.vfims.com/oidc","description":"Global Sandbox"},{"url":"https://uscst-gb.gsc.vficloud.net/oidc","description":"Americas Sandbox"}],"security":[{"BasicAuth":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic"}},"schemas":{"ListKeyPairResponse":{"type":"object","properties":{"public_keys":{"description":"This is the public key required to encrypt the card data at client side before sending to Greenbox","type":"array","items":{"$ref":"#/components/schemas/CreateKeyPairResponse"}}},"required":["public_keys"]},"CreateKeyPairResponse":{"type":"object","properties":{"public_key":{"type":"string","description":"This is the public key required to encrypt the card data at client side before sending to Greenbox"},"public_key_alias":{"type":"string","description":"Public Key Alias"},"created_at":{"type":"string","format":"date-time","description":"The time that this key was created."}},"required":["public_key","public_key_alias","created_at"]},"BadRequestV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[400],"default":400},"message":{"type":"string","enum":["At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the requests body, query for parameters appended to the requests URL, and params for templated parameters of the requests URL."],"default":"At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the requests body, query for parameters appended to the requests URL, and params for templated parameters of the requests URL."}},"required":["message"]},"UnauthorizedV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[401],"default":401},"message":{"type":"string","enum":["Access is restricted to authenticated users only. The query can't be made without a valid JWT token (check the Authorization header of your request)."],"default":"Access is restricted to authenticated users only. The query can't be made without a valid JWT token (check the Authorization header of your request)."}},"required":["message"]},"ForbiddenV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[403],"default":403},"message":{"type":"string","enum":["Insufficient permissions. Your current user roles don't allow you to perform this query. Should you believe this error to be incorrect, please contact an administrator."],"default":"Insufficient permissions. Your current user roles don't allow you to perform this query. Should you believe this error to be incorrect, please contact an administrator."}},"required":["message"]},"NotFoundV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[404],"default":404},"message":{"type":"string","enum":["The requested resource, or one of its sub-resources, can't be found. If the submitted query is valid, this error is likely to be caused by a problem with a nested resource that has been deleted or modified. Check the details property for additional insights."],"default":"The requested resource, or one of its sub-resources, can't be found. If the submitted query is valid, this error is likely to be caused by a problem with a nested resource that has been deleted or modified. Check the details property for additional insights."}},"required":["message"]},"InternalErrorV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[500],"default":500},"message":{"type":"string","enum":["Unexpected error: if the error persists, please contact an administrator, quoting the code and timestamp of this error"],"default":"Unexpected error: if the error persists, please contact an administrator, quoting the code and timestamp of this error"}},"required":["message"]}}},"paths":{"/api/v2/key":{"get":{"operationId":"listKeyPair","summary":"List Key Pair","description":"This will return the active public keys that can be shared with a merchant to encrypt card data prior to send.","parameters":[],"responses":{"200":{"description":"Key Result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeyPairResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestV2Docs"}}}},"401":{"description":"Unauthorised","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedV2Docs"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenV2Docs"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundV2Docs"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorV2Docs"}}}}},"tags":["Secure Card Capture"]}}}}
```

## Deactivate Key Pair

Sets a key pair's status to inactive. Requests using this key alias will be rejected after deactivation.

{% hint style="warning" %}
Deactivating a key pair will cause all in-flight encrypted card payloads using that alias to fail. Coordinate rollover carefully.
{% endhint %}

## Deactivate Key Pair

> This sets the status of the key pair to inactive.

```json
{"openapi":"3.0.0","info":{"title":"Verifone eCommerce API","version":"2.38.1"},"servers":[{"url":"https://emea.gsc.verifone.cloud/oidc","description":"EMEA Production"},{"url":"https://us.gsc.verifone.cloud/oidc","description":"Americas Production"},{"url":"https://nz.gsc.verifone.cloud/oidc","description":"New Zealand Production"},{"url":"https://cst.test-gsc.vfims.com/oidc","description":"Global Sandbox"},{"url":"https://uscst-gb.gsc.vficloud.net/oidc","description":"Americas Sandbox"}],"security":[{"BasicAuth":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic"}},"schemas":{"BadRequestV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[400],"default":400},"message":{"type":"string","enum":["At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the requests body, query for parameters appended to the requests URL, and params for templated parameters of the requests URL."],"default":"At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the requests body, query for parameters appended to the requests URL, and params for templated parameters of the requests URL."}},"required":["message"]},"UnauthorizedV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[401],"default":401},"message":{"type":"string","enum":["Access is restricted to authenticated users only. The query can't be made without a valid JWT token (check the Authorization header of your request)."],"default":"Access is restricted to authenticated users only. The query can't be made without a valid JWT token (check the Authorization header of your request)."}},"required":["message"]},"ForbiddenV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[403],"default":403},"message":{"type":"string","enum":["Insufficient permissions. Your current user roles don't allow you to perform this query. Should you believe this error to be incorrect, please contact an administrator."],"default":"Insufficient permissions. Your current user roles don't allow you to perform this query. Should you believe this error to be incorrect, please contact an administrator."}},"required":["message"]},"NotFoundV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[404],"default":404},"message":{"type":"string","enum":["The requested resource, or one of its sub-resources, can't be found. If the submitted query is valid, this error is likely to be caused by a problem with a nested resource that has been deleted or modified. Check the details property for additional insights."],"default":"The requested resource, or one of its sub-resources, can't be found. If the submitted query is valid, this error is likely to be caused by a problem with a nested resource that has been deleted or modified. Check the details property for additional insights."}},"required":["message"]},"InternalErrorV2Docs":{"type":"object","properties":{"details":{"type":"object","additionalProperties":{"type":"object"}},"timestamp":{"type":"number","description":"Error timestamp"},"reversal_status":{"type":"string","description":"Indicates to the API client if a technical reversal has been completed by Verifone.","default":"NONE","enum":["NONE","REQUIRED","COMPLETED"]},"code":{"type":"number","enum":[500],"default":500},"message":{"type":"string","enum":["Unexpected error: if the error persists, please contact an administrator, quoting the code and timestamp of this error"],"default":"Unexpected error: if the error persists, please contact an administrator, quoting the code and timestamp of this error"}},"required":["message"]}}},"paths":{"/api/v2/key/{keyAlias}/deactivate":{"patch":{"operationId":"deactiveKeyPair","summary":"Deactivate Key Pair","description":"This sets the status of the key pair to inactive.","parameters":[{"name":"keyAlias","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Success. Key pair deactivated."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestV2Docs"}}}},"401":{"description":"Unauthorised","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedV2Docs"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenV2Docs"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundV2Docs"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorV2Docs"}}}}},"tags":["Secure Card Capture"]}}}}
```

## Encryption Payload Format

The JSON to encrypt must include the card data fields and a `captureTime` in UTC RFC 3339 format. Example:

```json
{
  "cardNumber": "4929123123123127",
  "cardholderName": "MR J HOLDER",
  "expiryMonth": "12",
  "expiryYear": "2026",
  "cvv": "123",
  "captureTime": "2024-06-01T14:15:22Z"
}
```

Encrypt the entire JSON as a single line (no whitespace) using the public key. Pass the Base64-encoded result as `encrypted_card`, along with `public_key_alias`, in your payment or token request.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verifone.com/api-reference/open-api-references/ecommerce/secure-card-capture.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
