Roles & Terminology
This guide covers two integration roles. Your role determines which flows are relevant to your integration.Which role am I? If you use the Borderless API to create identities and accounts for your users β you are an Originator VASP. If you receive users from Borderless β you are a Beneficiary VASP. Some organizations act as both.
Prerequisites
Before integrating with Mastercard Crypto Credential, ensure the following:- Your organization is registered on the Borderless platform with active API or Dashboard credentials. Please contact the Borderless team.
- You have received your Mastercard Crypto Credential keys from Mastercard. Please see the links below for details on how to generate each prerequisite:
- ICA β created and shared after onboarding
- Client ID β How to generate
- Encryption Key β How to generate an RSA key pair
- Your Mastercard keys are stored in Borderless via
PUT /organizations/integrationsor through the Borderless Dashboard, and your organization is flagged as a Mastercard partner. These are two separate switches and both must be set β otherwise no Crypto Credential is created and the proxy endpoints report a configuration error. - Proxy endpoint access is enabled for your organization, if you intend to call Mastercard directly through Borderless. Contact the Borderless team to turn it on. The passive flows described below do not require it.
Mastercard responses are encrypted. Alongside Mastercardβs public encryption key you also provide your own RSA private key, which Borderless uses to decrypt them. Generate the pair with the tutorial linked above and share the public certificate with Mastercard during onboarding.
Originator VASP
You use the Borderless API to onboard users and manage their accounts. By storing your Mastercard keys in Borderless, your users automatically receive a Crypto Credential β making them verifiable across the Mastercard Crypto Credential network.Creating Crypto Credential
Option A: Automatic Creation (Passive)
How it works: This flow uses the standard Borderless API for creating identities and managing compliance. If you are not yet integrated with the Borderless API, see the Quick Start Guide to get started. Once your Mastercard keys are stored in Borderless, a Crypto Credential is created automatically for each identity you create β personal or business. No additional API calls or integration work is needed. The response toPOST /identities/personal and POST /identities/business includes the resulting cryptoCredential.
When to use:
This is the recommended default for Originator VASPs. Your existing Borderless integration handles everything β creation happens transparently in the background.
What to implement:
Nothing. Store your Mastercard keys in Borderless and continue using your existing flow.
If the alias is already registered by another participant, Mastercard rejects the registration. We record the identity as verified and keep serving its status, but the credential itself remains under the participant that registered it first β so
aliases.domainName is not returned and the Crypto Credential endpoints will not accept it.An email address is required. Since the alias is the identityβs email, an identity created without one gets
cryptoCredential.errors instead of a credential. This mostly affects business identities, where email is optional in the standard flow.Option B: Create via Proxy Endpoint (Active)
How it works: If you need to create a Crypto Credential at a specific point in your flow β for example for a user who was onboarded outside of Borderless, or when you want explicit control over timing β call the proxy endpoint directly. When to use: When you need granular control over when and for whom a credential is created, or when the user was not onboarded through the standard Borderless identity flow. Example:
Full endpoint documentation: Create a Crypto Credential account
Credentials created this way are not linked to a Borderless identity, so they do not appear in
GET /identities/{id}. Use Search for a Crypto Credential account to read them back.Crypto Credential Lifecycle
Option A: Update via Identity Endpoint (Passive)
How it works: To change an identityβs Crypto Credential state β for example to suspend it during an investigation β include acryptoCredential object in the standard identity update request: PATCH /identities/personal/{id} or PATCH /identities/business/{id}. Borderless maps your status to the corresponding Mastercard status and handles the API call.
For an identity that already has a credential, omitting cryptoCredential leaves it untouched.
For an identity that has none, any update creates one as Active β including an update that omits cryptoCredential entirely. Note the asymmetry: sending status: "Suspended" or "Decommissioned" for an identity with no credential creates nothing and returns none. Create the credential first, then change its status in a second call.
When to use:
When you manage credential lifecycle through the standard Borderless identity flow. This is the recommended default.
Example:
cryptoCredential):
You can only change a credential your organization issued. If it was issued by another participant the credential is left untouched, but the request still returns
200 β the reason arrives in cryptoCredential.errors, not as an error status code. Check that field rather than relying on the HTTP status.Option B: Update via Proxy Endpoint (Active)
How it works: If you need full control over Mastercard-specific fields, or want to update a credential that is not tied to a Borderless identity, call the proxy endpoint directly. Example:204 No Content on success.
Full endpoint documentation: Update a Crypto Credential account
Credential Lookup
As an Originator VASP, you may need to check a Crypto Credential before initiating a transaction.Option A: Standard Identity Endpoint (Passive)
UseGET /identities/{id}. The response includes the identityβs cryptoCredential, with state read live from Mastercard.
cryptoCredential:
cryptoCredential is present when a VASP in the Borderless network has verified this identity β either your own organization, or a PFI you routed compliance to. It is scoped to that identity, not to the email address: verification happens once per identity, and if the same person later appears as a separate identity β a different customer record, at your platform or another β that record starts without a credential until it completes compliance in its own right. We do not treat two identities as the same person because they share an alias.
Every field inside
cryptoCredential is always present in the response, holding null β or [] for assets β where there is no value. Nothing is dropped from the object. Only cryptoCredential itself is omitted, and only when your organization is not set up for Mastercard. Test for === null, not for a missing key.errors and status never both carry a value: when errors is set, status, country and vasps are null and assets is []. aliases stays populated in most error cases, so it remains the one field you can still read. Treat the state as unknown and retry β do not treat it as an absent credential.cryptoCredential: null does not mean the user has no Crypto Credential. It means we hold no record for this identity β the same alias may be registered by a participant outside the Borderless network. To ask the network directly, call GET /mastercard/crypto-credential/alias-lookup.Option B: Proxy Endpoints (Active)
Cross-network lookup β query the entire Mastercard network to check an alias at any participant:asset to narrow the result to one asset and network pair, plus offset (default 0) and limit (default 25, maximum 100) to page through the aliasβs assets.
Full endpoint documentation: Look up a Crypto Credential alias
Account search β read the accounts your own organization registered:
alias-lookup vs accounts/search:
alias-lookup queries the entire Mastercard network and returns status, country and supported assets β but never a blockchain address or an alias list. accounts/search is scoped to your own ICA and returns the full account, including every alias and registered address. Use alias-lookup to check a counterparty; use accounts/search to inspect your own records.Crypto Address
Registering a blockchain address links it to a Crypto Credential and declares which asset and network it supports. This is what allows other participants to send funds to your user by alias, and lets Mastercard confirm the recipient can actually receive a given asset on a given chain before a transaction starts.Option A: Automatic via Borderless Account (Passive)
This flow is planned for an upcoming release. Until it ships, register addresses with the proxy endpoints below.
Option B: Manage via Proxy Endpoints (Active)
How it works: Register, update and decommission blockchain addresses directly. Example:
The response carries the address
id. Keep it β the update, get and decommission endpoints address the record by that identifier, and it is otherwise only recoverable through accounts/search.
Additional address endpoints:
PUT /mastercard/crypto-credential/crypto-addresses/{cryptoAddressId}β change theaccountAlias,address,assetorstatus. All four are optional; returns204 No ContentDELETE /mastercard/crypto-credential/crypto-addresses/{cryptoAddressId}β decommission permanently; returns204 No ContentGET /mastercard/crypto-credential/crypto-addresses/{cryptoAddressId}β read a single address
Beneficiary VASP
As a Beneficiary VASP, you receive users from Borderless. When an identity already carries a Crypto Credential, Borderless passes it to your platform β enabling a simplified compliance process. If the identity has none, Borderless creates a Crypto Credential on your behalf after the user passes compliance at your platform. The integration requires minimal changes on your side. All existing flows remain unchanged β the integration is entirely additive. VASPs that are not participating in the program are not affected in any way.Creating Crypto Credential
Option A: Automatic Creation (Passive)
When a user is sent to your platform by Borderless, they go through your standard compliance and KYC process. Borderless monitors the outcome β either via long polling or by receiving a webhook from your system β and waits for your decision. Once you approve the user, Borderless automatically creates a Crypto Credential record in the Mastercard network on your behalf, using your stored keys. If you reject the user, Borderless suspends the credential instead and passes your rejection reasons along as the explanation. This is the default behaviour and requires no changes to your existing flow.It is recommended that a blockchain address be linked to a userβs Crypto Credential username, so the crypto address can be used for both sending and receiving from other participants in the global Crypto Credential network.
Option B: Create via Proxy Endpoint (Active)
If you need to create a Crypto Credential independently β for a user who was not onboarded through Borderless, or at a specific point in your own flow β use the proxy endpoint directly:Once a Crypto Credential username has been created and linked to a blockchain address, the VASP is responsible for telling their user that they can receive from other Crypto Credential network participants using that username. The username is the Mastercard-generated domain name alias. The proxy response returns it in
additionalAccountAliases, as the entry whose aliasType is DomainName; in the passive identity flow the same value appears as aliases.domainName.Crypto Credential Lifecycle
Option A: Automatic via Compliance Status (Passive)
How it works: When you update a userβs status at your platform β for example when a user fails re-verification or is flagged for investigation β Borderless receives that update through your existing reporting mechanism and maps it to the corresponding Mastercard status. Your rejection reasons are passed through as the explanation. What to implement: Nothing. Continue using your existing status reporting flow.Option B: Update via Proxy Endpoint (Active)
If you need direct control over credential status, call the proxy endpoint with the same payload as described for Originator VASPs: Full endpoint documentation: Update a Crypto Credential accountRetrieving Crypto Credential
Option A: Receive Credential Data (Passive)
How it works: Once enabled, the user payload sent to your platform includes acryptoCredential object alongside the standard user data you already receive. No additional API calls are needed.
This is not turned on by default. Borderless enables it after you confirm your system accepts the new field β an unrecognised field can otherwise fail schema validation on your side.
What to implement:
- Update your user creation endpoint to accept the
cryptoCredentialfield. - If
statusisActive, consider a reduced review based on your internal compliance policy.
cryptoCredential is null. Proceed with your standard KYC flow.
aliases.domainName is null unless your organization issued the credential itself, because only the issuing participant can act on it.
Not all participants choose to display assets and networks during onboarding to Crypto Credential, so not every user on the network has them associated with their username. If there are associated assets and networks they will be returned; if not,
assets is empty.Option B: Query the Network (Active)
How it works: Borderless sends user data to your system as it does today. When you want to check an alias against the Mastercard network, call the proxy endpoint yourself. This gives you full control over when and how you retrieve credential data. What to implement:- Call
GET /mastercard/crypto-credential/alias-lookupwith the userβs alias. - Use the status returned to make a compliance decision: reduced review, or full KYC.
Comparison: Passive vs Active
API Reference
All endpoints require a Bearer token. See Authentication.Borderless API Endpoints
These standard Borderless endpoints participate in the Crypto Credential flow:Configuration
Proxy Endpoints
Proxy endpoints require proxy access to be enabled for your organization. Without it every call below returns
403 Forbidden with Mastercard Proxy access is not enabled for your organization. Contact the Borderless team to enable it.Webhook
Forwarding Mastercard event notifications to your webhook endpoint is planned for an upcoming release.
Frequently Asked Questions
Do I need to register with Mastercard separately? Yes. Your organization must have an active contract with Mastercard and receive credential keys (ICA, Client ID and Encryption Key). You also generate your own RSA key pair for decrypting responses. You never communicate with Mastercard directly β Borderless handles all API calls on your behalf using your stored keys. What happens if an identity has no Crypto Credential? For Beneficiary VASPs:cryptoCredential is null in the user payload. Proceed with your standard KYC process. Once you approve the user, Borderless creates a Crypto Credential for them.
For Originator VASPs: a Crypto Credential is created automatically with the identity. If cryptoCredential is missing entirely, your organization is not set up β either it is not flagged as a Mastercard partner, or one of the required keys is absent. An alias already registered by another participant is a different case: cryptoCredential is still returned, just without aliases.domainName.
Does null mean the user has no Crypto Credential at all?
No. It means we hold no verification record for that identity. The same alias may be registered by a participant outside the Borderless network. Use alias-lookup to ask the network.
Can Beneficiary VASPs auto-approve users based on a Crypto Credential?
status: "Active" means the alias holder was verified by a participant in the network. A Crypto Credential indicates that a user has been verified by an eligible VASP and may be eligible for the requested activity β it does not eliminate the need for the receiving or sending VASP to meet all relevant regulatory and compliance obligations, including establishing that the person contacting you controls the alias. Your compliance team defines the policy.
Why is aliases.domainName missing?
Because the credential was issued by another participant β either a PFI you routed compliance to, or a VASP outside Borderless. Only the issuing participant can surface the username or act on the credential.
Why does aliases.email differ from identity.email?
The credential stays bound to the alias it was registered with. If the user later changes their email address on your platform, the credential does not follow. Other participants will continue to resolve the original alias.
What is the difference between alias-lookup and accounts/search?
alias-lookup queries the entire Mastercard network and returns status, country and supported assets. accounts/search is scoped to your own ICA and returns full account detail, including aliases and registered addresses.
Can my organization be both an Originator and Beneficiary VASP?
Yes. Some organizations act as both β onboarding their own users (Originator) while also receiving users from other VASPs through Borderless (Beneficiary). Implement the flows for both roles as needed.
What is the sandbox base URL?
https://sandbox-api.borderless.xyz. Use this for all integration testing. Contact Borderless for production credentials and base URL.
The Mastercard sandbox returns mock responses and validates only the length and data type of request parameters. It is suitable for verifying your integration wiring, not for exercising complete credential lifecycles.
Support
For questions or integration support, reach out to the Borderless team:- Email: support@borderless.xyz
- Slack: your dedicated partner channel
- API Docs: docs.borderless.xyz