Technical specifications

Pix Integration through Pix Hub

Onboarding and transactional documentation.


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/gateway
  • Certification: https://connect-cert.latam.fiservapis.com/gateway

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"
}


Pix Hub Onboarding

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


Pix Hub

General Information

This document specifies the Pix Hub API for transactional operations involving collections and payments via Pix. Key features include:

  • Authentication: Obtaining a token for all operations.
  • Generation of Pix Collections: Create Pix collections efficiently and securely.
  • Pix Payment Consultation: Check the status and details of payments made via Pix.
  • Return: Return payments via Pix efficiently.

Error Structure

All errors handled are returned in the following standard format:

{
  "message": "Error message",
  "details": [
    {
      "errorCode": 0,
      "error": "Description of the error"
    }
  ]
}

Default Headers

Some information is required in all requests:

HeaderDescription
AuthorizationAuthentication token. See POST /token
apikeyMade available by Fiserv after accreditation
x-timestampTimestamp of the request. Also used for the generation of HMAC signature
x-hmac-signatureHMAC signature generated. See HMAC Calculation section

POST /token

Authentication endpoint required for all calls. Get the authentication token through a client_secret and client_id. Send via application/x-www-form-urlencoded and use the Bearer token for subsequent requests.

See Authentication Documentation


HMAC Calculation

The HMAC must be calculated using the SHA256 algorithm and the private key provided by Fiserv, containing the following concatenated fields:

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

function setHMACAuth(request) {
  const currentDate = new Date();
  var API_KEY = pm.collectionVariables.get('apikey');
  var SECRET = pm.collectionVariables.get('secret');
  var requestId = generateUUID();
  const timestamp = currentDate.getTime().toString();
  var rawData = API_KEY + timestamp + request.body.toString() + '/' + pm.request.url.path.toString().replaceAll(',', '/');
  var signedValue = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, SECRET).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);


Charges (Collections)

POST /apm/pix/v1/charges

Create a Pix charge (QR Code).

Request Fields
FieldTypeDescriptionMandatory
omniPaymentIdstringFiserv OmniPayment IDyes
amountdecimalPayment amountyes
providersobjectPSP list and Credential Alias. If not provided, default values from onboarding are usedno
providers.providerCodestringCode provided by the Central Bank for each PSPno
providers.credentialAliasstringCredential alias earned after registering a PSP credential during the onboarding processno
expirationnumberQR Code expiration time in seconds. Default: 900no
payerRequeststringText presented to the payer for entering related information (up to 140 characters in pacs.008)no
additionalInfo[].namestringAdditional information label presented to the payerno
additionalInfo[].valuestringAdditional information value presented to the payerno
Response Fields
FieldTypeDescription
tidstringFiserv transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, alphanumeric up to 36 characters
provider.providerCodestringPSP used to carry out the transaction
provider.credentialAliasstringCredential used to perform the transaction
pixCopyPastestringPayment QR code, alphanumeric up to 750 characters
statusstringPayment status. Possible values: PENDING, DENIED

GET /apm/pix/v1/charges/{tid}

Query a charge by transaction ID.

Request Fields
FieldTypeDescriptionMandatory
tidstringFiserv Transaction IDyes
Response Fields
FieldTypeDescription
tidstringFiserv transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, alphanumeric up to 36 characters
endToEndIdstringTransaction ID between PSPs, alphanumeric up to 36 characters
provider.providerCodestringPSP used to carry out the transaction
provider.credentialAliasstringCredential used to perform the transaction
refunds[].rtrIdstringChargeback transaction ID between PSPs, alphanumeric up to 32 characters
refunds[].amountdecimalReversed amount
refunds[].solicitedAtstringChargeback date and time
refunds[].statusstringChargeback status
statusstringPayment status. Possible values: PENDING, CANCELLED, EXPIRED, FINISHED, REVERSED
amountnumberPayment amount. Format: DDDDDDDD.DD
pixCopyPastestringPayment QR code, alphanumeric up to 750 characters

PUT /apm/pix/v1/charges/{tid}/refund

Request a reversal (chargeback) of the charge amount. Should only be used after the customer has already made the payment and the transaction is finalized.

Request Fields
FieldTypeDescriptionMandatory
amountnumberAmount to be refundedyes
Response Fields
FieldTypeDescription
tidstringFiserv transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, alphanumeric up to 36 chars
rtrIdstringChargeback transaction ID between PSPs, alphanumeric up to 32 chars
amountdecimalReversed amount
solicitedAtstringDate and time of the request
statusstringChargeback status. Possible values: CONFIRMED


Charges with Due Date (Pix COBV)

POST /apm/pix/v2/charges-duedate

Create a Pix charge with a due date (COBV format).

Request Fields
FieldTypeDescriptionMandatory
omniPaymentIdstringFiserv OmniPayment IDyes
amountdecimalPayment amountyes
providersobjectPSP list and Credential Alias. If not provided, default values from onboarding are usedno
providers.providerCodestringCode provided by the Central Bank for each PSPno
providers.credentialAliasstringCredential alias earned after registering a PSP credential during the onboarding processno
dueDatedatePayment due date (ISO 8601, e.g. 2026-12-01). Payment can be made up to and including this dateyes
expirationDatedateDeadline for payment after the due date (ISO 8601). Must be greater than dueDate. Defaults to dueDate + 30 daysno
payerRequeststringText presented to the payer for entering related information (up to 140 characters in pacs.008)no
additionalInfo[].namestringAdditional information label presented to the payerno
additionalInfo[].valuestringAdditional information value presented to the payerno
interestModalitystringInterest calculation method. Possible values: DAILY_FIXED_VALUE, DAILY_PERCENTAGE, MONTHLY_PERCENTAGE, YEARLY_PERCENTAGE, BUSINESS_DAY_VALUE, BUSINESS_DAY_PERCENT, BUSINESS_MONTH_PERCENT, BUSINESS_YEAR_PERCENTno
interestValuestringInterest value (absolute or percentage, per interestModality). Pattern: \d{1,10}\.\d{2}no
penaltyModalitystringPenalty value format: FIXED or PERCENTAGE. Mandatory when penaltyValue is informedno
penaltyValuestringPenalty value (absolute or percentage, per penaltyModality). Pattern: \d{1,10}\.\d{2}no
discountModalitystringDiscount calculation method. Possible values: FIXED_AMOUNT_WITH_DATE, PERCENTAGE_WITH_DATE, VALUE_ADVANCE_CALENDAR, VALUE_ADVANCE_BUSINESS, PERCENT_ADVANCE_CALENDAR, PERCENT_ADVANCE_BUSINESSno
discounts[].discountDatedateMandatory when discountModality is FIXED_AMOUNT_WITH_DATE or PERCENTAGE_WITH_DATE (ISO 8601)no
discounts[].discountValuestringDiscount value (absolute or percentage). Pattern: \d{1,10}\.\d{2}no
rebateModalitystringRebate value format: FIXED or PERCENTAGE. Mandatory when interestValue is informedno
rebateValuestringRebate value (absolute or percentage, per rebateModality)no
payer.personTypestringPayer type: COMPANY for companies or INDIVIDUAL for individualsyes
payer.taxNumberstringPayer's tax number. CPF (11 digits) for individuals or CNPJ (^[0-9A-Z]{14}$) for companiesyes
payer.namestringPayer's nameyes
payer.emailstringPayer's email (up to 100 characters)no
payer.address.streetstringPayer's street (up to 200 characters)no
payer.address.citystringPayer's city (up to 100 characters)no
payer.address.statestringPayer's state abbreviation (UF, 2 characters)no
payer.address.postalCodestringPayer's postal code (up to 8 characters)no
receiver.pixKeystringReceiver's Pix key (CPF/CNPJ, mobile phone with country code, email, or random UUID key - 36 characters)yes
Response Fields
FieldTypeDescription
tidstringFiserv transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, alphanumeric up to 36 characters
provider.providerCodestringPSP used to carry out the transaction
provider.credentialAliasstringCredential used to perform the transaction
pixCopyPastestringPayment QR code, alphanumeric up to 750 characters
statusstringPayment status. Possible values: PENDING, DENIED
dueDatedatePayment due date
expirationDatedatePayment expiration date
payer.emailstringPayer's email
payer.address.streetstringPayer's street
payer.address.citystringPayer's city
payer.address.statestringPayer's state (UF)
payer.address.postalCodestringPayer's postal code
receiver.pixKeystringReceiver's Pix key
interestValuenumberInterest value. Format: DDDDDDDD.DD
penaltyValuenumberPenalty value. Format: DDDDDDDD.DD
rebateValuenumberRebate value. Format: DDDDDDDD.DD
discounts[].discountDatedateDiscount date
discounts[].discountValuenumberDiscount value

GET /apm/pix/v2/charges-duedate/{tid}

Query a Pix COBV charge by transaction ID.

Request Fields
FieldTypeDescriptionMandatory
tidstringFiserv Transaction IDyes
Response Fields
FieldTypeDescription
tidstringFiserv transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, alphanumeric up to 36 characters
endToEndIdstringTransaction ID between PSPs, alphanumeric up to 36 characters
provider.providerCodestringPSP used to carry out the transaction
provider.credentialAliasstringCredential used to perform the transaction
refunds[].rtrIdstringChargeback transaction ID between PSPs
refunds[].amountdecimalReversed amount
refunds[].solicitedAtstringChargeback date and time
refunds[].statusstringChargeback status
statusstringPayment status. Possible values: PENDING, CANCELLED, EXPIRED, FINISHED, REVERSED
amountnumberPayment amount. Format: DDDDDDDD.DD
dueDatedatePayment due date
expirationDatedatePayment expiration date
pixCopyPastestringPayment QR code, alphanumeric up to 750 characters
payer.emailstringPayer's email
payer.address.streetstringPayer's street
payer.address.citystringPayer's city
payer.address.statestringPayer's state (UF)
payer.address.postalCodestringPayer's postal code
payer.taxNumberstringPayer's tax number (CPF or CNPJ)
payer.namestringPayer's name
receiver.pixKeystringReceiver's Pix key
interestValuenumberInterest value. Format: DDDDDDDD.DD
penaltyValuenumberPenalty value. Format: DDDDDDDD.DD
rebateValuenumberRebate value. Format: DDDDDDDD.DD
discounts[].discountDatedateDiscount date
discounts[].discountValuenumberDiscount value

PUT /apm/pix/v1/charges/{tid}/cancel

Cancel the QR Code of the generated charge. Use this to cancel before the customer makes the payment, or when the transaction status has not yet been returned. If the transaction has already been paid, a refund will be requested automatically.

Request Fields
FieldTypeDescriptionMandatory
tidstringFiserv Transaction IDyes
Response Fields
FieldTypeDescription
tidstringPix Hub transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, alphanumeric up to 36 characters
statusstringPayment status. Possible values: PENDING, CANCELLED, DENIED, FINISHED
provider.providerCodestringPSP used to carry out the transaction
provider.credentialAliasstringCredential used to perform the transaction


Transaction Callback

After the payment is made or the QR Code expires, the registered URL will receive the following notification.

⚠️

For security reasons, when receiving a callback, validate the Api-Key and the Authorization (HMAC signature).

Callback Request Headers
FieldTypeDescription
Client-Request-IdstringRequest ID (UUID)
Api-KeystringAPI Key registered during the onboarding process
TimestampstringDate and time of submission of the request
Auth-Token-TypestringAlways HMAC
AuthorizationstringHMAC Signature: SHA256(Api-Key + Client-Request-Id + Timestamp + RequestBody)
Callback HMAC Calculation

The HMAC must be calculated using the SHA256 algorithm and the private key registered during onboarding, containing the following concatenated fields:

Api-Key + Client-Request-Id + Timestamp + RequestBody

Note: The JSON of the request body must be in compact format (inline), without line breaks or extra formatting. Do not include invisible characters such as \r, \n, or unnecessary spaces.

const crypto = require('crypto');

function guid() {
  function s4() {
    return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
  }
  return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4();
}

const apiKey = "API_KEY";
const secret = "SECRET";
const clientRequestId = guid();
const timeStamp = new Date().getTime();
const requestBody = JSON.stringify(request.data);
const rawSignature = apiKey + clientRequestId + timeStamp + requestBody;

const hmac = crypto.createHmac('sha256', secret);
hmac.update(rawSignature);
const computedHmac = hmac.digest('base64');

const headers = {
  "content-type": "application/json",
  "client-request-id": clientRequestId,
  "Api-Key": apiKey,
  "Timestamp": timeStamp,
  "Auth-Token-Type": "HMAC",
  "Authorization": computedHmac
};
Callback Fields
FieldTypeDescription
tidstringFiserv transaction ID, alphanumeric up to 60 characters
txidstringPix payment transaction ID with BACEN, up to 36 characters
endToEndIdstringTransaction ID between PSPs, alphanumeric up to 36 characters
statusstringPayment status. Possible values: FINISHED, EXPIRED
operationTypenumberTransaction type: 0 – Charge, 3 – Expiration
rtrIdstringChargeback ID (for chargeback confirmation only)
provider.providerCodestringPSP used to carry out the transaction
provider.credentialAliasstringCredential used to perform the transaction