PCI Vault Logo
Proxy

PCI Vault can securely send and receive sensitive payment data on your behalf, allowing your website or application to communicate with Payment Service Providers (PSPs) and other third-party services without bringing PCI-sensitive data into your environment. This helps minimize your PCI DSS scope while maintaining seamless integrations.

The PCI Proxy uses a powerful and flexible templating engine that enables you to transform and map requests to virtually any API or web service. Whether you're integrating with a PSP, payment gateway, or custom endpoint, the proxy can be tailored to match the required request and response formats. If you need any assistance, the PCI Vault development team is available to help you configure and optimize your proxy templates.

POST /proxy/post Send Data to Third Parties
PCI DSS Scope: SAQ-A

Decrypt and send data to a third party, the third party's response will be sent to you via a webhook.

If requests to the third party fails with status 429 or 500 or higher, it will be retried.

The request object will be used to populate the request to the third party. The body property can be any valid mustache template. The keys in the mustache template will be matched back to the JSON object for the given token and populated accordingly.

The reply from the third party will be forwarded to the URL specified in the webhook object.

All URLs must use the HTTPS protocol and have valid SSL certificates.

Requests are asynchronous by default, but when the synchronous parameter is set to true, it will wait and return the response from the third party directly.


Note: the third party is required to return a result within 20 seconds for synchronous calls. Longer running requests are considered a failure.


(query)

The token for the data to be decrypted and sent.

(query)

The reference with which the token has been stored, both the reference and the token must be supplied in order to decrypt the associated data.

(query)

The identifier for the key used to originally encrypt the data.

(query)

The passphrase for the key used to originally encrypt the data.

(query)

How many times the request to the the third party will be tried until it succeeds. Every attempt is billable. The default value is 5, the maximum value is 5, and the minimum is 1.

(query)

Debug mode returns the populated template as it will be sent to the third party. Debug mode requests are still treated as live requests: the request to the third party will be made and be billed accordingly.

(query)

A comma separated list of rule ids to apply to the sent data in order. This does not change stored data. Learn more about the Rule Engine.

(body) [ProxyRequest]

The request body as described in the Proxy Data Guide.

Example data presets:

(body)

Execute the request synchronously and wait for response.

(body)

Make the request originate from a static IP address. Set to true if the third party requires requests to come from one IP address which can be whitelisted.

(body) [WebhookRequest]

A webhook to send the asynchronous proxy request result to.

(body -> webhook)

The URL for the webhook. This must be an https URL.

(body -> webhook)

A secret that will be returned in the webhook call's X-PCIVault-Webhook-Secret header.

(body -> webhook)

A value between 1 and 5 for the maximum amount of times the webhook should be called per token update. Calls to the webhook will stop on a 200 HTTP response, or when max_attempts are reached.

(body -> webhook)

Some metadata which will be merged into the webhook response. This is useful for uniquely identifying webhook responses to requests.

API Operation Usage +
POST
https://api.pcivault.io/v1/proxy/post
Response Code: 200 (example) [ProxyPostResponse]
POST /proxy/get Get Data from Third Parties
PCI DSS Scope: SAQ-A

Retrieve and encrypt data from a third party, the token will be sent to you via a webhook.

If requests to the third party fails with status 429 or 500 or higher, it will be retried.

All URLs must use the HTTPS protocol and have valid SSL certificates.

Requests are asynchronous by default, but when the synchronous parameter is set to true, it will wait and return the response from the third party directly.


Note: the third party is required to return a result within 20 seconds for synchronous calls. Longer running requests are considered a failure.


(query)

The user for the key to use when storing the third party response.

(query)

The passphrase to use when storing the third party response.

(query)

The tokenization algorithm to use when storing the third party response.

(query)

Set to true to use PCI Vault's smart parse algorithm to interpret the third party response.

(query)

The tokenization algorithm to use when storing the third party response.

(query)

How many times the request to the the third party will be tried until it succeeds. Every attempt is billable. The default value is 5, the maximum value is 5, and the minimum is 1.

(query)

A comma separated list of rule ids to apply to the received data in order. The rules are applied right before the data is stored.

(body) [ProxyRequest]

The request body that needs to be sent.

Example data presets:

(body)

Execute the request synchronously and wait for response.

(body)

Make the request originate from a static IP address. Set to true if the third party requires requests to come from one IP address which can be whitelisted.

(body) [WebhookRequest]

A webhook to send the asynchronous proxy request result to.

(body -> webhook)

The URL for the webhook. This must be an https URL.

(body -> webhook)

A secret that will be returned in the webhook call's X-PCIVault-Webhook-Secret header.

(body -> webhook)

A value between 1 and 5 for the maximum amount of times the webhook should be called per token update. Calls to the webhook will stop on a 200 HTTP response, or when max_attempts are reached.

(body -> webhook)

Some metadata which will be merged into the webhook response. This is useful for uniquely identifying webhook responses to requests.

API Operation Usage +
POST
https://api.pcivault.io/v1/proxy/get
Response Code: 200 (example) [ProxyGetResponse]
POST /proxy/csr Create a Certificate Signing Request
PCI DSS Scope: N/A

Create a Certificate Signing Request to be used when generating a client certificate for mTLS.

When sending data to, or fetching data from a third party that uses mTLS, the third party will ask for a CSR which they will use to generate a certificate. This certificate can be imported and later used to make requests to the third party. Use the Import Proxy Certificate endpoint to import a certificate.

This endpoint will generate a key pair behind the scenes and embed the public key in the CSR. The private key is stored internally and cannot be retrieved.


Note: The CSR must not be deleted after generating a certificate as it holds the key pair needed to decrypt data from the third party.


(query)

A unique id for the CSR. Will be used later to import the actual certificate. If left blank, an id will be generated.

(query)

The length of the generated key in number of bits. Allowed values are 2048, 3072 and 4096. Defaults to 2048.

(body)

Common Name. This is the fully qualified domain name.

(body)

Organization. The official legal name of the company.

(body)

Organizational Unit. The internal department managing the certificate.

(body)

Locality. The city or town where the company is located.

(body)

State or Province. Region where the company resides.

(body)

Country. The standard 2 letter code for the location e.g US

API Operation Usage +
POST
https://api.pcivault.io/v1/proxy/csr
Response Code: 200 (example) [CertificateSigningRequest]
PCI DSS Scope: N/A

List Certificate Signing Requests using this endpoint. You can either fetch a specific CSR by providing its id, or list all of the available ones.

By default the action returns the CSR details with all the domain attributes and the actual data in a JSON object, the new lines in the data are therefore escaped. In order to get the data in text format for easier saving on the file system, pass the download=true query parameter.

(query)

The unique id of the CSR when trying to fetch a specific one. If omitted, all CSRs will be listed.

(query)

Set to true to download the CSR data only, as text.

API Operation Usage +
GET
https://api.pcivault.io/v1/proxy/csr
# No Body
Response Code: 200 (example) [CertificateSigningRequest | GetCSRsResponse]
PCI DSS Scope: N/A

Delete a specific CSR.


Note: Once deleted, the key pair associated with it also gets deleted. Therefore any certificates generated from the CSR become unusable.


(query)

The unique id of the CSR to delete.

API Operation Usage +
DELETE
https://api.pcivault.io/v1/proxy/csr
# No Body
Response Code: 200 (example) [MessageResponse]
POST /proxy/cert Import Client Certificate
PCI DSS Scope: N/A

Import a client certificate to be used for mTLS requests to a third party.

Once a third party has signed the Certificate Signing Request you generated, import the resulting certificate here. The csr_id query parameter must reference the CSR that was used to generate the certificate, so that the imported certificate can be matched with its stored key pair.

The body of the request is the raw PEM encoded certificate data.


Note: The CSR referenced by csr_id must not be deleted, as it holds the key pair needed to use this certificate.


(query)

A unique id for the certificate. If left blank, an id will be generated.

(query)

The id of the Certificate Signing Request that was used to generate this certificate.

The PEM encoded certificate data.

API Operation Usage +
POST
https://api.pcivault.io/v1/proxy/cert
-----BEGIN CERTIFICATE-----
MIIEwjCCAqoCAQAwfTELMAk...
-----END CERTIFICATE-----
Response Code: 200 (example) [ClientCertificate]
PCI DSS Scope: N/A

List client certificates using this endpoint. You can either fetch a specific certificate by providing its id, or list all of the available ones.

By default the action returns the certificate details in a JSON object, the new lines in the data are therefore escaped. In order to get the data in text format for easier saving on the file system, pass the download=true query parameter.

(query)

The unique id of the certificate when trying to fetch a specific one. If omitted, all certificates will be listed.

(query)

Set to true to download the certificate data only, as text.

API Operation Usage +
GET
https://api.pcivault.io/v1/proxy/cert
# No Body
Response Code: 200 (example) [ClientCertificate | GetClientCertificatesResponse]
PCI DSS Scope: N/A

Delete a specific client certificate.


Note: This does not delete the Certificate Signing Request or key pair used to generate the certificate. To also remove those, delete the corresponding CSR.


(query)

The unique id of the certificate to delete.

API Operation Usage +
DELETE
https://api.pcivault.io/v1/proxy/cert
# No Body
Response Code: 200 (example) [MessageResponse]
POST /proxy/network_token Get a Network Token alpha
PCI DSS Scope: SAQ-A
This feature is currently in the "alpha" development phase. We have provided the documentation so that you can plan your integration while we finalise and test our implementation.
The specifications on this endpoint are subject to change.

If you have a Network Token Requester ID, PCI Vault can assist in requesting and returning network tokens.

(query)

The token for the data to be decrypted and sent.

(query)

The reference with which the token has been stored, both the reference and the token must be supplied in order to decrypt the associated data.

(query)

The identifier for the key used to originally encrypt the data.

(query)

The passphrase for the key used to originally encrypt the data.

(query)

Your Network Token Requester ID.

(body) [WebhookRequest]

A webhook to send the network tokenization result to.

(body -> webhook)

The URL for the webhook. This must be an https URL.

(body -> webhook)

A secret that will be returned in the webhook call's X-PCIVault-Webhook-Secret header.

(body -> webhook)

A value between 1 and 5 for the maximum amount of times the webhook should be called per token update. Calls to the webhook will stop on a 200 HTTP response, or when max_attempts are reached.

(body -> webhook)

Some metadata which will be merged into the webhook response. This is useful for uniquely identifying webhook responses to requests.

POST
https://api.pcivault.io/v1/proxy/network_token
Response Code: 200 (example)