Onboarding

Pix Hub Onboarding

API for Acceptance Terms

General Information

Introduction

This document is intended to facilitate integration with Fiserv's PSP Boarding API for capture acceptance terms, providing a flow overview and details of the new endpoints.

Environments

  • Production: https://connect.latam.fiservapis.com
  • Certification: https://connect-cert.latam.fiservapis.com

POST /v3/clients/opt-in

Endpoint that generates the link for acceptance terms.

Request Fields
NameTypeDescriptionMandatory
documentObjectClient documentyes
document.typeStringDocument type. Allowed values: CNPJ or CPFyes
document.numberStringDocument numberyes
tradeNameStringLegal name of the clientyes
pixFeeObjectCharged fee data, containing fee type and amountyes
pixFee.amountNumberFixed amount fee for PIX transactions. Mutually exclusive with percentage and min/max valuesno
pixFee.percentageNumberPercentage fee for Pix transactions. Mutually exclusive with fixed amount fieldno
pixFee.minNumberMinimum absolute value for a percentage-based fee. Mutually exclusive with fixed amount fieldno
pixFee.maxNumberMaximum absolute value for a percentage-based fee. Mutually exclusive with fixed amount fieldno
contactObjectClient's contact informationyes
contact.nameStringContact nameyes
contact.emailStringContact emailyes
contact.phoneStringContact phone numberyes
Request Example
{
  "document": {
    "type": "CNPJ",
    "number": "60.664.745/0001-87"
  },
  "tradeName": "Fiserv Inc",
  "pixFee": {
    "percentage": 100,
    "min": 0,
    "max": 5
  },
  "contact": {
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "5511999111000"
  }
}
Response Fields
PropertyTypeDescription
urlStringThe URL to the opt-in link for the client
idStringThe unique identifier for the created opt-in link
Response Example
{
  "url": "https://identify-hmg.stoneage.com.br/?token=HKenPEA-vW1o_oqQlJ7uH",
  "id": "557997d6-80db-4ab7-acd4-fe7753e8b76a"
}

GET /v3/clients/link/:link_id

Endpoint to check the status of terms acceptance.

Request Fields
PropertyTypeDescriptionMandatory
link_id (path)StringThe unique identifier for the created opt-in linkyes
Response Fields
PropertyTypeDescription
documentObjectClient document
document.typeStringDocument type. Allowed values: CNPJ or CPF
document.numberStringDocument number
statusStringLink status: CREATED (generated but not accessed), INITIATED (accessed), FINISHED (accessed and form submitted)
Response Example
{
  "document": {
    "type": "CNPJ",
    "number": "60664745000187"
  },
  "status": "FINISHED"
}


General Information

Introduction

This document is intended to facilitate integration with Fiserv's Pix Hub Onboarding API, providing an overview for managing account holders and stores. The main operations described are:

  • Authentication: Generate the token and HMAC signature which are required for all requests.
  • Store: Register, update, retrieve and delete stores.
  • Webhook management: Register your webhook URL to receive notifications from the boarding process.
  • Protocol: Retrieve protocol information.

Standard Headers

All requests require the following headers:

HeaderDescription
AuthorizationOAuth 2.0 Bearer token. See POST /token
apikeyAPI key provided by Fiserv during the integration
x-timestampRequest timestamp. Also required in the HMAC signature
x-hmac-signatureHMAC signature. See HMAC Calculation section
x-request-idUnique random ID to identify the request

Async Processing

Depending on the operation, Pix Hub Onboarding will process requests either synchronously or asynchronously.

  • Asynchronously: A unique protocol identification (UUID-v4) will be provided in the Pix Hub Onboarding response, along with an HTTP 202 – Accepted response.
  • Synchronously: Expected HTTP 201 – Created or HTTP 200 – OK.

Error Format

All errors handled are returned in the following standard format:

{
  "type": "/error/conflict",
  "title": "Conflict",
  "status": 409,
  "detail": "Status code indicates that the request could not be completed due to a conflict with the current state of the target resource",
  "instance": "/omnihub/onboard/v4/pix-gateway/stores",
  "properties": {
    "protocolId": "725040be-54f2-4546-9f6a-1f591fc60318",
    "additionalDetails": [
      {
        "errorCode": "409",
        "errorMessage": "Additional error information"
      }
    ],
    "timestamp": "2025-05-18T19:21:37.846642896Z"
  }
}

POST /token

Endpoint that generates an OAuth 2.0 bearer token required for all requests. A valid combination of username and password (or client_id and client_secret) are required.

See Authentication Documentation


HMAC Calculation

The HMAC signature must be calculated using a SHA256 script using the private key provided by Fiserv, containing the following concatenated string:

APIKEY + TIMESTAMP + REQUEST_BODY + URL_PATH
Postman Script Example
var CryptoJS = require("crypto-js");

function setHMACAuth(request) {
  const currentDate = new Date();
  var HMAC_KEY = pm.environment.get('hmacKey') || pm.collectionVariables.get('hmacKey');
  var requestId = generateUUID();
  const timestamp = currentDate.getTime().toString();
  var requestedPath = pm.variables.replaceIn(pm.request.url).getPath();
  // Remove the first '/' if exists.
  requestedPath = requestedPath.indexOf('/') == 0 ? requestedPath.substring(1) : requestedPath;
  var body = request.body == undefined ? "" : pm.variables.replaceIn(request.body.toString());
  var context = "onboard/sandbox";
  if (request.url.path == 'token') {
    context = "gateway";
  }
  var rawData = API_KEY + timestamp + body + '/' + context + '/' + requestedPath;
  var signedValue = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, HMAC_KEY).update(rawData).finalize();
  hashedStringRequest = CryptoJS.enc.Base64.stringify(signedValue);
  pm.request.headers.add({ key: "x-timestamp", value: timestamp });
  pm.request.headers.add({ key: "x-hmac-signature", value: hashedStringRequest });
  pm.request.headers.add({ key: "x-request-id", value: requestId });
}

function generateUUID() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
    return v.toString(16);
  });
}

setHMACAuth(pm.request);

Protocol

GET /v4/protocol/{protocol-id}

Get all data from the given protocol ID.

Request Fields
PropertyTypeDescription
protocol-id (path)stringProtocol identifier
Response Fields
PropertyTypeDescription
protocolIdstringProtocol identification
protocolStatus.statusstringAllowed values: PROCESSING, SUCCESS, PARTIAL_SUCCESS, ERROR
protocolStatus.finalbooleantrue if the protocol is in final state (no more processing expected)
externalProtocolIdstring[Optional] If provided during the original request
payloadobjectOriginal payload
linksobjectHATEOAS related links
events[].omniEventIdstringEvent UUID
events[].eventTypestringEvent type
events[].responseCodestringEvent response code
events[].descriptionstringEvent description
events[].eventStatusstringEvent status: SUCCESS, SKIP, ERROR
events[].eventSourcestringPix Hub Onboarding component that produced the event
Responses
CodeDescription
200OK
400Bad Request. See Error format
404Not Found. See Error format

Webhooks

Configure the webhook URL to receive notifications from async boarding processes. For every request that returns HTTP 202 – Accepted, Pix Hub Onboarding will process it asynchronously. All events generated will trigger the webhook.

PUT /v3/webhook

Register or update the webhook URL to receive notifications from the async boarding processes. An auth object can be provided for Pix Hub Onboarding to authenticate with the external URL before making the notification.

Request Fields
PropertyMandatoryType / SizeDescription
urlyesString / 255URL to receive notifications
authnoObjectOptional authentication object
auth.typeyesStringAuthentication type. Allowed: OAuth2.0-Bearer
auth.urlyesString / 255Authentication URL
auth.clientIdyesStringClient ID used to authenticate
auth.clientSecretyesString / 255Client secret used to authenticate
Responses
CodeDescription
204No Content – successful execution
400Bad Request. See Error format

GET /v3/webhook

Retrieve current webhook settings.

Response Fields
PropertyTypeDescription
urlStringURL to receive notifications
Responses
CodeDescription
200OK
404Not Found. See Error format

DELETE /v3/webhook

Remove the current webhook configuration.

Responses
CodeDescription
204No Content – successful execution
404Not Found. See Error format

Webhook Callbacks

Callback Fields
PropertyTypeDescription
protocolIdStringProtocol unique identifier
externalProtocolIdStringExternal protocol ID (provided on original request)
protocolStatusStringProtocol status: PARTIAL_SUCCESS, ERROR, SUCCESS, PROCESSING
eventStatusStringEvent status: SUCCESS, SKIP, ERROR
eventSourceStringSource of the event
eventTypeStringEvent type (e.g., PROTOCOL_COMPLETION)
responseCodeStringResponse code – details the event result
descriptionStringDescription of the event
Callback Examples

Example 1: Event completed, async processing not finished:

{
  "protocolId": "faae306f-4018-3d2a-941c-79df4414c5ea",
  "externalProtocolId": null,
  "protocolStatus": "PROCESSING",
  "eventStatus": "SUCCESS",
  "eventSource": "FEPAS_MODULE",
  "eventType": "CREATE_STORE_FEPAS",
  "responseCode": "FEPAS_00200",
  "description": "Store and client created successfully"
}

Example 2: Event completed, protocol status is SUCCESS:

{
  "protocolId": "faae306f-4018-3d2a-941c-79df4414c5ea",
  "externalProtocolId": null,
  "protocolStatus": "SUCCESS",
  "eventStatus": "SUCCESS",
  "eventSource": "FEPAS_MODULE",
  "eventType": "UPDATE_STORE_PIX_ROUTE_FEPAS",
  "responseCode": "FEPAS_00200",
  "description": "Store Pix route updated successfully"
}

Pix Gateway

General Information

Key Concepts

  • Account Holder: The CNPJ to which the registered Pix key belongs. Pix keys can be associated with the stores below them.
  • Store: Multiple per CNPJ; can be associated only with 1 Account Holder. Uses credentials bound to it to perform transactions. Identified by a unique composite key: establishmentId + externalReferenceId.
  • Credential: A unique identification given when registering a Pix key on the platform.

HATEOAS

Most Pix Gateway endpoints include a links property in the response for API discoverability. The exposed links may change in the future. For every endpoint documented, expect the links property to contain at least what is listed, but possibly more.

Environments

The Pix Gateway API uses a different base URL from the other Onboarding APIs:

  • Production: https://connect.latam.fiservapis.com/onboard/api
  • Certification: https://connect-cert.latam.fiservapis.com/onboard/api

GET /v4/pix-gateway/account-holders/{id}

Retrieve the given Account Holder information.

Request Fields
PropertyTypeDescription
id (path)StringAccount Holder unique identifier
Response Fields
PropertyTypeDescription
idStringAccount Holder unique identifier
legalNameStringAccount Holder legal name
document.numberStringAccount Holder document number
createdStringAccount Holder creation date (ISO-8601)
links.self.hrefStringHATEOAS to this account holder
links.self.typeStringHTTP method (GET)
Responses
CodeDescription
200OK
400Bad Request. See Error format
401Unauthorized. See Error format
403Forbidden. See Error format
404Not Found. See Error format

GET /v4/pix-gateway/account-holders/{id}/credentials

Retrieve the given Account Holder's credential information.

Request Fields
PropertyTypeDescription
id (path)StringAccount Holder unique identifier
Response Fields
PropertyTypeDescription
_embedded.credentialList[].idStringCredential unique identifier
_embedded.credentialList[].pspIspbStringCredential PSP ISPB code
_embedded.credentialList[].pixKeyStringCredential Pix key
_embedded.credentialList[].pixClientIdStringCredential Pix client ID
_embedded.credentialList[].credentialAliasStringCredential Pix transaction alias
_embedded.credentialList[].links.self.hrefStringHATEOAS to this account holder credential
_embedded.credentialList[].links.self.typeStringHTTP method (GET)
Responses
CodeDescription
200OK
400Bad Request. See Error format
401Unauthorized. See Error format
403Forbidden. See Error format
404Not Found. See Error format

Stores

POST /v4/pix-gateway/stores

Creates the store for Pix operations in the Pix Gateway structure. In this endpoint, you need to inform the Account Holder and it is possible to create credentials and configure routing contingencies or balancing based on PSPs.

Note: It is not possible to create the same store twice, but it IS possible to use the same document for two stores. The externalReferenceId field must be unique for stores with the same legal document, including the blank string.

Request Fields
PropertyMandatoryType / SizeDescription
documentyesObjectStore document data
document.typeyesStringStore document type (CPF / CNPJ)
document.numberyesString / [11, 18]Store document number
externalReferenceIdnoStringAdditional store identifier. Must be unique for stores with the same legal document
addressyesObjectStore address data
address.countryyesString / 2Address country code (ISO 3166-1 alpha-2). Recommended values are BR, AR and UY. Other values may not be supported
address.localityyesString / 30Store district
address.numberyesString / 9Store address number
address.postalCodeyesString / [8, 9]Store postal code
address.provinceyesString / 2Store state abbreviation (ISO 3166-2)
address.streetyesString / 110Store street
address.subNumbernoString / 30Store address complement
tradeNameyesString / 25Store trade name
transactionCallbacknoObjectCallback data for transaction purposes
transactionCallback.urlyesString / 255Callback URL for payment transaction purposes
transactionCallback.apiKeyyesString / [24, 50]API key used to sign the callback request
transactionCallback.apiSecretyesString / [32, 64]API secret used to sign the callback request
accountHolderyesObjectStore's Account Holder data
accountHolder.rel*noString / 255HATEOAS relative Account Holder URL. If provided, uses this resource; if not, creates a new account holder
accountHolder.document.type**noStringAccount Holder document type (CPF / CNPJ)
accountHolder.document.number**noString / [11, 18]Account Holder document number
accountHolder.legalName**noString / 100Account holder legal name
routeryesObjectTransaction routing configuration
router.routerTypeyesStringRouting type: BALANCING or CONTINGENCY
router.routes[].balancingWeightnoNumberRoute's balancing weight (used in BALANCING routing)
router.routes[].pspIspbyesString / 8Route's PSP ISPB code
router.routes[].routeOrdernoNumberRoute order for CONTINGENCY routing (1 = first route)
automaticPixnoArrayAutomatic Pix configuration list
automaticPix[]noObjectAutomatic Pix configuration item
automaticPix[].pspIspbyesString / 8Automatic Pix - PSP ISPB code
automaticPix[].agencyyesStringAutomatic Pix – agency number
automaticPix[].accountyesStringAutomatic Pix – account number
automaticPix[].accountTypeyesStringAutomatic Pix – account type
credentialsnoArrayList containing credential data
credentials[]noObjectObject containing a specific Pix credential's data
credentials[].rel*noString / 255Relative resource for credential
credentials[].pspIspb**noString / 8Credential's PSP ISPB code
credentials[].pixClientId**noStringCredential's Pix Client ID
credentials[].pixClientSecret**noStringCredential's Pix Client secret
credentials[].pixKey**noStringCredential's Pix key
credentials[].pixKeyStoreAssociationnoObjectSpecific Pix key configurations for this store's use of the credential
credentials[].pixKeyStoreAssociation.pixKeyyesStringSpecific Pix key for use by the store
credentials[].pixKeyStoreAssociation.pixKeyTypeyesStringPix key type: CNPJ, CPF, CELULAR, EMAIL, or ALEATORIO
credentials[].transactionalDocumentnoStringTransactional document. Some PSPs require this additional information
credentials[].defaultnoBooleanWhether this credential should be used as default for transactions

Note: Use either the fields marked with * or **.

Response Fields
PropertyTypeDescription
idStringStore identification
externalReferenceIdStringAdditional store identifier
omniPaymentIdStringIdentification for omni-payment used in transactions
accountHolder.idStringAccount holder identification
accountHolder.legalNameStringAccount holder's legal name
accountHolder.relStringHATEOAS relative URL for the Account Holder
credentials[].idStringCredential's unique identification
credentials[].pspIspbStringCredential's PSP ISPB code
credentials[].credentialAliasStringCredential's transaction alias
credentials[].link.self.hrefStringCredential's HATEOAS link
credentials[].link.self.typeStringCredential's HATEOAS HTTP method
protocol.hrefStringHATEOAS link for retrieving protocol information
protocol.typeStringHTTP method for protocol link (GET)
Responses
CodeDescription
201Created (synchronous)
202Accepted (asynchronous)
400Bad Request. See Error format
401Unauthorized. See Error format
403Forbidden. See Error format
404Not Found. See Error format
409Conflict. See Error format

GET /v4/pix-gateway/stores/{id}

Retrieve the given Store data.

Request Fields
PropertyTypeDescription
id (path)StringStore unique identifier
Response Fields
PropertyTypeDescription
document.typeStringStore document type (CPF / CNPJ)
document.numberStringStore document number
omniPaymentIdString[Legacy] The first OmniPayment identifier for this store
omniPaymentIds[]ArrayList of OmniPayment identifiers related to the establishment
externalReferenceIdStringAdditional store identifier
address.localityStringStore district
address.numberStringStore address number
address.postalCodeStringStore postal code
address.provinceStringStore state
address.streetStringStore street
address.subNumberStringStore address complement
tradeNameStringStore trade name
transactionCallback.urlStringCallback URL for payment transaction purposes
accountHolder.document.typeStringAccount Holder document type
accountHolder.document.numberStringAccount Holder document number
accountHolder.legalNameStringAccount holder legal name
accountHolder.link.self.hrefStringAccount holder HATEOAS link
accountHolder.link.self.typeStringAccount holder HATEOAS HTTP method
router.routerTypeStringRouting type: BALANCING or CONTINGENCY
router.routes[].balancingWeightNumberRoute's balancing weight
router.routes[].pspIspbStringRoute's PSP ISPB code
router.routes[].routeOrderNumberRoute order (1 = first route)
automaticPix[].pspIspbStringAutomatic Pix - PSP ISPB code
automaticPix[].agencyStringAutomatic Pix – agency number
automaticPix[].accountStringAutomatic Pix – account number
automaticPix[].accountTypeStringAutomatic Pix – account type
credentials[].relStringHATEOAS rel link
credentials[].idStringCredential identification
credentials[].pspIspbStringCredential's PSP ISPB code
credentials[].pixClientIdStringCredential's Pix Client ID
credentials[].pixKeyStringCredential's Pix key
credentials[].credentialAliasStringCredential alias for payment transaction use
credentials[].defaultBooleanDefault credential for payment transaction use
credentials[].link.self.hrefStringCredential's HATEOAS link
credentials[].link.self.typeStringCredential's HATEOAS HTTP method
Responses
CodeDescription
200OK
400Bad Request. See Error format
401Unauthorized. See Error format
403Forbidden. See Error format
404Not Found. See Error format

PATCH /v4/pix-gateway/stores/{id}

Partial update a Pix Gateway store. Only the fields sent in the request will be updated. Also used to create a new credential to be used in an existing store.

Request Fields
PropertyMandatoryType / SizeDescription
id (path)yesStringStore unique identification
transactionCallbacknoObjectCallback data for transaction purposes
transactionCallback.urlyesString / 255Callback URL for payment transaction purposes
transactionCallback.apiKeyyesString / [24, 50]API key used to sign the callback request
transactionCallback.apiSecretyesString / [32, 64]API secret used to sign the callback request
routeryesObjectTransaction routing configuration
router.routerTypeyesStringRouting type: BALANCING or CONTINGENCY
router.routes[].balancingWeightnoNumberRoute's balancing weight
router.routes[].pspIspbyesString / 8Route's PSP ISPB code
router.routes[].routeOrdernoNumberRoute order for CONTINGENCY routing
automaticPixnoArrayAutomatic Pix configuration list
automaticPix[]noObjectAutomatic Pix configuration item
automaticPix[].pspIspbyesString / 8Automatic Pix - PSP ISPB code
automaticPix[].agencyyesStringAutomatic Pix – agency number
automaticPix[].accountyesStringAutomatic Pix – account number
automaticPix[].accountTypeyesStringAutomatic Pix – account type
credentialsnoArrayList containing credential data
credentials[]noObjectObject containing a specific Pix credential's data
credentials[].rel*noString / 255Relative resource for credential
credentials[].pspIspb**noString / 8Credential's PSP ISPB code
credentials[].pixClientId**noStringCredential's Pix Client ID
credentials[].pixClientSecret**noStringCredential's Pix Client secret
credentials[].pixKey**noStringCredential's Pix key
credentials[].pixKeyStoreAssociationnoObjectSpecific Pix key configurations for this store's use of the credential
credentials[].pixKeyStoreAssociation.pixKeyyesStringSpecific Pix key for use by the store
credentials[].pixKeyStoreAssociation.pixKeyTypeyesStringPix key type: CNPJ, CPF, CELULAR, EMAIL, or ALEATORIO
credentials[].defaultnoBooleanWhether this credential should be used as default for transactions

Note: Use either the fields marked with * or **.

Response Fields
PropertyTypeDescription
idStringStore identification
externalReferenceIdStringAdditional store identifier
omniPaymentIdStringThe identification for omni-payment used in transactions
credentials[].idStringCredential's unique identification
credentials[].pspIspbStringCredential's PSP ISPB code
credentials[].credentialAliasStringCredential's transaction alias
credentials[].link.self.hrefStringCredential's HATEOAS link
credentials[].link.self.typeStringCredential's HATEOAS HTTP method
protocol.hrefStringLink for retrieving protocol information
protocol.typeStringHTTP method for href (GET)
Responses
CodeDescription
200OK (synchronous)
202Accepted (asynchronous)
400Bad Request. See Error format
401Unauthorized. See Error format
403Forbidden. See Error format
404Not Found. See Error format

DELETE /v4/pix-gateway/store/{store-id}/credentials/{credential-id}

Unbinds the given credential from the given store, without deleting the credential.

Request Fields
PropertyTypeDescription
store-id (path)StringStore unique identifier
credential-id (path)StringCredential unique identifier
Responses
CodeDescription
204No Content

Credentials

GET /v4/pix-gateway/credentials/{id}

Retrieve the given Credential data.

Request Fields
PropertyTypeDescription
id (path)StringCredential unique identifier
Response Fields
PropertyTypeDescription
idStringCredential unique identifier
pspIspbStringCredential's PSP ISPB code
pixClientIdStringCredential's Pix Client ID
pixKeyStringCredential's Pix key
credentialAliasStringCredential alias used for transactional purposes
links.self.hrefStringCredential's HATEOAS link
links.self.typeStringCredential's HATEOAS HTTP method

DELETE /v4/pix-gateway/credentials/{id}

Delete the given Credential.

Request Fields
PropertyTypeDescription
id (path)StringCredential unique identifier
Responses
CodeDescription
204No Content – successful execution

PSP

GET /v4/pix-gateway/psps

Retrieve all available PSPs, optionally filtering by activity status. Example: /v4/pix-gateway/psps?status=I. If no filter parameter is provided, all PSPs will be listed.

Request Fields
PropertyTypeDescription
status (query)StringPSP status filter: I – Integrated, C – Inactive, N – Not integrated
Response Fields
PropertyTypeDescription
psps[].idStringPSP ISPB code
psps[].nameStringPSP name
psps[].pixUrlStringPSP Pix URL
psps[].authUrlStringPSP auth URL
psps[].statusStringPSP status
links.self.hrefStringPSP HATEOAS link
links.self.typeStringPSP HATEOAS HTTP method
Responses
CodeDescription
200OK

GET /v4/pix-gateway/psps/{id}

Retrieve the given PSP information.

Request Fields
PropertyTypeDescription
id (path)StringPSP ISPB code
transactionalDocument (query)StringTransactional document. If not sent, might fail for some PSPs
Response Fields
PropertyTypeDescription
idStringPSP ISPB code
nameStringPSP name
pixUrlStringPSP Pix URL
authUrlStringPSP auth URL
statusStringPSP status
credentialFields[].fieldStringField identification to use on credentials[].dynamicField
credentialFields[].labelStringField label with a short description
credentialFields[].sizeStringField value size limit
credentialFields[].descriptionStringField description with detailed information
links.self.hrefStringPSP HATEOAS link
links.self.typeStringPSP HATEOAS HTTP method
Responses
CodeDescription
200OK