Skip to main content

Token migration to Purse Vault

This page lists the technical specifications for migrating stored cards to Purse Vault. It is intended for the teams producing the export file and for merchants coordinating the migration.

Data exchange​

The sender exports stored cards into a single CSV file, encrypts it, and uploads it to the Purse SFTP server of the target environment.

EnvironmentSFTP hostIP address
Sandboxsftp.purse-sandbox.com104.199.45.223
Productionsftp.purse-live.com34.140.126.91

SFTP credentials are provided by Purse for each migration.

Encryption​

The file is encrypted with OpenPGP asymmetric encryption:

  • Purse provides the public key of the target environment (see Public PGP keys).
  • The sender encrypts the file with this public key.
  • Purse decrypts the file with the matching private key, which never leaves Purse.
ParameterValue
StandardOpenPGP
Purse keyRSA, 4096 bits
Symmetric cipherAES-256

Example encryption with GnuPG:

gpg --import purse-vault-production.asc
gpg --encrypt --cipher-algo AES256 \
--recipient [email protected] \
--output tokens.csv.gpg tokens.csv
Cardholder data

The file contains clear-text PANs. Never transfer it unencrypted, and use the key matching the target environment: sandbox files with the sandbox key, production files with the production key.

Data format​

Columns​

ColumnFormatDescription
customer_referenceStringCustomer reference. Must match the customer reference sent when creating a client session.
pan15 to 19 digitsCard number, in clear text.
expiry_month2 digitsExpiry month, from 01 to 12.
expiry_year4 digitsExpiry year, for example 2029.
networkEnumNetwork chosen by the cardholder during tokenization. See Networks.
card_holder_nameStringCardholder name.

Networks​

ValueNetwork
VISAVisa
MASTERCARDMastercard
CARTE_BANCAIRECartes Bancaires
AMERICAN_EXPRESSAmerican Express

CSV rules​

  • Follows RFC 4180.
  • UTF-8 encoded.
  • Header row required, with the column names above.

Example file​

customer_reference,pan,expiry_month,expiry_year,network,card_holder_name
QZ1234OW,4242424242424242,04,2029,CARTE_BANCAIRE,John Doe
LB8764ER,4111111111111111,04,2029,VISA,Michel Martin
YT3905MJ,5204740000004501,04,2029,MASTERCARD,Emmanuel Roche

Public PGP keys​

Verify the fingerprint after importing a key, for example with gpg --show-keys --with-fingerprint purse-vault-production.asc.

Sandbox​

PropertyValue
User IDPurse Vault <[email protected]>
Primary fingerprintD29D 87F8 2653 6F2B A2AB AEB1 62F8 FFA2 5865 57E0
Encryption subkeyDE16 F6D5 6C9C D31A E264 640B BA22 41B7 E1F5 5716
AlgorithmRSA 4096
Expires2027-02-05
Downloadpurse-vault-sandbox.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
HQI0cEt4otFmirazuOte
=6wpK
-----END PGP PUBLIC KEY BLOCK-----

Production​

PropertyValue
User IDPurse Vault <[email protected]>
Primary fingerprint45EF 5BAC 67DE 4E3A 8663 0A7A 1A37 3D3C D6C3 13EC
Encryption subkeyC04C 05C4 2A8F 8451 1441 4CF3 4C27 12E0 113C 5342
AlgorithmRSA 4096
Expires2027-02-05
Downloadpurse-vault-production.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
vCI/0fCCPuhCw1nH
=InqS
-----END PGP PUBLIC KEY BLOCK-----