Data Model Reference
This reference documents all entity types, fields, connections, filter inputs, and supporting types in the Merchant Data API.
Payin, Payout, and Claim are the three primary entities. Claims are linked to Payins through the transactionId foreign key. A single Claim can be associated with multiple Payins (via the relatedPayins nested field). Aggregation queries operate across all three datasets.
erDiagram
PAYIN {
string transactionId PK
string trackingId
decimal amount
string currency
string transactionStatusName
datetime createdTs
datetime editedTs
}
PAYOUT {
string transactionId PK
string trackingId
decimal amount
string currency
decimal settlementAmount
string transactionStatusName
datetime createdTs
datetime editedTs
}
CLAIM {
string claimId PK
string transactionId FK
decimal amount
string status
string claimReason
datetime createdTs
datetime editedTs
}
PAYIN ||--o{ CLAIM : "has claims"
CLAIM }o--|| PAYIN : "relatedPayins"
Payin
An inbound payment transaction where funds are received from a customer.
| Field | Type | Format | Nullable | Description |
|---|---|---|---|---|
transactionId | String | -- | No | Unique transaction identifier. |
trackingId | String | -- | Yes | External tracking reference provided by your system. |
amount | String | Money (2 decimal places) | Yes | Transaction amount (e.g., "55.03"). |
currency | String | ISO 4217 | Yes | Currency code (e.g., "BRL"). |
createdDate | String | yyyy-MM-dd | Yes | Date the payin was created. |
createdTs | String | ISO 8601 | Yes | Timestamp when the payin was created. |
editedTs | String | ISO 8601 | Yes | Timestamp of the last status update. |
transactionStatusName | String | -- | Yes | Current status (e.g., "APPROVED", "CANCELLED", "EXPIRED", "PENDING", "FAILED"). |
transactionDescription | String | -- | Yes | Human-readable description. |
countryName | String | -- | Yes | Country where the transaction was processed. |
shopName | String | -- | Yes | Name of the shop. |
paymentMethodId | Int | -- | Yes | Payment method identifier. |
paymentMethodName | String | -- | Yes | Payment method name (e.g., "PIX"). |
paymentChannelTypeCode | String | -- | Yes | Payment channel type code. |
customerEmail | String | Yes | Customer email. PII -- may be masked. | |
customerPersonalId | String | -- | Yes | Customer personal ID (e.g., CPF). PII -- may be masked. |
customerFullName | String | -- | Yes | Customer full name. PII -- may be masked. |
customerAddress | String | -- | Yes | Customer address. |
customerCity | String | -- | Yes | Customer city. |
customerPostalCode | String | -- | Yes | Customer postal code. |
customerState | String | -- | Yes | Customer state or province. |
customerPhone | String | -- | Yes | Customer phone number. PII -- may be masked. |
customerIp | String | IP | Yes | Customer IP address. |
bankName | String | -- | Yes | Bank name. |
bankCountryName | String | -- | Yes | Country of the bank. |
notificationUrl | String | URI | Yes | Merchant notification callback URL. |
couponAmount | String | Money | Yes | Amount paid via coupon. |
bankAccountType | String | -- | Yes | Type of bank account. |
uniqueCustomerIdentifier | String | -- | Yes | Unique customer identifier. |
couponCurrencyCode | String | ISO 4217 | Yes | Currency code for the coupon amount. |
payerPersonalId | String | -- | Yes | Payer personal ID. PII -- may be masked. |
payerAccountNumber | String | -- | Yes | Payer account number. |
payerFullName | String | -- | Yes | Payer full name. PII -- may be masked. |
payerEmail | String | Yes | Payer email. PII -- may be masked. | |
payerCity | String | -- | Yes | Payer city. |
payerPhone | String | -- | Yes | Payer phone number. PII -- may be masked. |
payerAddress | String | -- | Yes | Payer address. |
payerBankName | String | -- | Yes | Payer bank name. |
errorReason | String | -- | Yes | Reason for transaction error. |
standardizedError | String | -- | Yes | Standardized error code. |
normalisedErrorReason | String | -- | Yes | Normalised error reason. |
isTest | Boolean | -- | Yes | Whether this is a test transaction. |
origin | String | -- | Yes | Origin of the transaction. |
Payout
An outbound payment transaction where funds are sent from the merchant to a recipient.
| Field | Type | Format | Nullable | Description |
|---|---|---|---|---|
transactionId | String | -- | No | Unique transaction identifier. |
trackingId | String | -- | Yes | External tracking reference. |
amount | String | Money | Yes | Payout amount. |
currency | String | ISO 4217 | Yes | Currency code. |
settlementAmount | String | Money | Yes | Settlement amount (may differ from amount due to fees or exchange rates). |
createdDate | String | yyyy-MM-dd | Yes | Date the payout was created. |
createdTs | String | ISO 8601 | Yes | Creation timestamp. |
editedTs | String | ISO 8601 | Yes | Last status update timestamp. |
transactionStatusName | String | -- | Yes | Current status (e.g., "FINISHED", "PENDING", "FAILED"). |
transactionDescription | String | -- | Yes | Human-readable description. |
countryName | String | -- | Yes | Country where the payout was processed. |
shopName | String | -- | Yes | Shop name. |
customerEmail | String | Yes | Customer email. PII -- may be masked. | |
customerPhone | String | -- | Yes | Customer phone. PII -- may be masked. |
customerAddress | String | -- | Yes | Customer address. |
customerCity | String | -- | Yes | Customer city. |
customerPersonalId | String | -- | Yes | Customer personal ID. PII -- may be masked. |
customerDocumentType | String | -- | Yes | Customer identity document type. |
isTest | Boolean | -- | Yes | Whether this is a test transaction. |
paidDate | String | yyyy-MM-dd | Yes | Date the payout was paid. |
paidTs | String | ISO 8601 | Yes | Timestamp when paid. |
beneficiaryFullName | String | -- | Yes | Payout beneficiary full name. |
beneficiaryTypeCode | String | -- | Yes | Beneficiary type code. |
payoutAccountTypeCode | String | -- | Yes | Destination account type code. |
accountNumber | String | -- | Yes | Destination account number. |
accountAgencyNumber | String | -- | Yes | Bank agency number. |
bankName | String | -- | Yes | Destination bank name. |
recipientPixKey | String | -- | Yes | PIX key of the recipient (Brazil-specific). |
normalisedErrorReason | String | -- | Yes | Normalised error reason. |
Claim
A chargeback or dispute claim filed against a payin transaction. A single claim may be associated with multiple payin transactions.
| Field | Type | Format | Nullable | Description |
|---|---|---|---|---|
claimId | String | -- | No | Unique claim identifier. Used as the cursor ID for claim pagination. |
transactionId | String | -- | Yes | Associated payin transaction ID. |
amount | String | Money | Yes | Claimed amount. |
createdDate | String | yyyy-MM-dd | Yes | Date the claim was created. |
createdTs | String | ISO 8601 | Yes | Creation timestamp. |
editedTs | String | ISO 8601 | Yes | Last update timestamp. |
status | String | -- | Yes | Claim status (e.g., "IN_FAVOR_MERCHANT"). |
claimReason | String | -- | Yes | Reason for the claim (e.g., "PIX_BRASIL_DISPUTE"). |
shopName | String | -- | Yes | Shop name. |
processedDate | String | yyyy-MM-dd | Yes | Date the claim was resolved. |
processedTs | String | ISO 8601 | Yes | Resolution timestamp. |
comments | String | -- | Yes | Comments on the claim resolution. |
refundedAmount | String | Money | Yes | Amount refunded to the claimant. |
amountInFavor | String | Money | Yes | Amount resolved in favour of the merchant. |
claimFee | String | Money | Yes | Fee charged for the claim. |
relatedPayins | [Payin] | -- | Yes | Nested list of payin transactions linked to this claim (maximum 100). |
relatedPayins
The relatedPayins field on a Claim returns the payin transactions associated with the claim. This is a nested query that returns up to 100 payins per claim.
query {
claims(
first: 1
filter: {
claimId: "20723"
createdDateFrom: "2026-01-01"
createdDateTo: "2026-01-31"
}
) {
edges {
node {
claimId
amount
status
claimReason
relatedPayins {
transactionId
amount
currency
transactionStatusName
}
}
}
}
}PageInfo
Pagination metadata returned with every connection.
| Field | Type | Description |
|---|---|---|
endCursor | String | Opaque cursor of the last item in the page. Pass as after to fetch the next page. Null when the page is empty. |
hasNextPage | Boolean | true if more results exist beyond the current page. |
PageSummary
Additional pagination metadata.
| Field | Type | Description |
|---|---|---|
rowCount | Int | Number of items in the current page. |
pageSizeLimit | Int | Effective page size limit applied (the first value or default 1000). |
totalCount | Int | Always null for list queries. |
AggregationResult
Returned by the aggregations query.
| Field | Type | Description |
|---|---|---|
totalCount | Int | Total count of records matching the filter. |
sumAmount | String (Money) | Sum of amounts for matching records. |
byStatus | [AggregationByStatus] | Per-status breakdown. |
AggregationByStatus
A single status bucket within an aggregation result.
| Field | Type | Description |
|---|---|---|
status | String | The status value. |
count | Int | Number of records with this status. |
sumAmount | String (Money) | Sum of amounts for records with this status. |
Example aggregation response
{
"data": {
"payinsAgg": {
"totalCount": 3720,
"sumAmount": "823980.71",
"byStatus": [
{ "status": "APPROVED", "count": 3176, "sumAmount": "678716.21" },
{ "status": "FAILED", "count": 9, "sumAmount": "515.71" },
{ "status": "PENDING", "count": 461, "sumAmount": "130922.74" },
{ "status": "EXPIRED", "count": 16, "sumAmount": "1723.57" },
{ "status": "CANCELLED", "count": 58, "sumAmount": "12102.48" }
]
}
}
}Connection types
All list queries return connection wrappers following the same pattern.
| Connection | Edge type | Node type |
|---|---|---|
PayinConnection | PayinEdge | Payin |
PayoutConnection | PayoutEdge | Payout |
ClaimConnection | ClaimEdge | Claim |
Each connection contains:
edges-- Array of edge objects, each with anodeandcursor.pageInfo--PageInfoobject withendCursorandhasNextPage.summary--PageSummaryobject withrowCount,pageSizeLimit, andtotalCount.
Filter inputs
PayinFilterInput
| Field | Type | Description |
|---|---|---|
transactionId | String | Exact match. Pinpoint filter. |
trackingId | String | Exact match. Pinpoint filter. |
personId | String | Exact match. Pinpoint filter. |
shopId | String | Filter by shop ID. |
createdDateFrom | String (date) | Start of date range (inclusive). |
createdDateTo | String (date) | End of date range (inclusive). |
status | String | Filter by transaction status. |
amountFrom | String (money) | Minimum amount. |
amountTo | String (money) | Maximum amount. |
paymentMethodName | String | Filter by payment method. |
PayoutFilterInput
| Field | Type | Description |
|---|---|---|
transactionId | String | Exact match. Pinpoint filter. |
trackingId | String | Exact match. Pinpoint filter. |
personId | String | Exact match. Pinpoint filter. |
shopId | String | Filter by shop ID. |
createdDateFrom | String (date) | Start of date range. |
createdDateTo | String (date) | End of date range. |
status | String | Filter by status. |
amountFrom | String (money) | Minimum amount. |
amountTo | String (money) | Maximum amount. |
settlementAmountFrom | String (money) | Minimum settlement amount. |
settlementAmountTo | String (money) | Maximum settlement amount. |
editedDateFrom | String (date) | Filter by last-edited date (start). |
editedDateTo | String (date) | Filter by last-edited date (end). |
ClaimFilterInput
| Field | Type | Description |
|---|---|---|
claimId | String | Exact match. Pinpoint filter. |
transactionId | String | Exact match. Pinpoint filter. |
shopId | String | Filter by shop ID. |
createdDateFrom | String (date) | Start of date range. |
createdDateTo | String (date) | End of date range. |
status | String | Filter by claim status. |
claimReason | String | Filter by claim reason. |
processedDateFrom | String (date) | Filter by processed date (start). |
processedDateTo | String (date) | Filter by processed date (end). |
refundedAmountFrom | String (money) | Minimum refunded amount. |
refundedAmountTo | String (money) | Maximum refunded amount. |
AggregationFilterInput
| Field | Type | Description |
|---|---|---|
createdDateFrom | String (date) | Start of date range (required). |
createdDateTo | String (date) | End of date range (required). |
AggregationDataset enum
Used with the aggregations query to specify which dataset to aggregate.
| Value | Description |
|---|---|
PAYINS | Aggregate payin transactions. |
PAYOUTS | Aggregate payout transactions. |
CLAIMS | Aggregate claim records. |
Field standards
Monetary amounts
All monetary values use the Money scalar type and are returned as strings with exactly 2 decimal places (e.g., "55.03", "1000.00"). Parse these as decimal types in your application -- do not use floating-point types to avoid precision loss.
Dates and timestamps
- Date fields (
createdDate,paidDate,processedDate): Formatyyyy-MM-dd. - Timestamp fields (
createdTs,editedTs,paidTs,processedTs): ISO 8601 format with timezone offset (e.g.,"2026-01-31T23:59:15.167Z").
Currency codes
All currency codes follow ISO 4217 (3-letter uppercase). Common currencies in the API include BRL, CLP, MXN, COP, and PEN.
PII fields
Fields marked as PII may be returned in masked form unless the X-Pii-Access: true header is included. PII fields include: customerEmail, customerPersonalId, customerFullName, customerPhone, payerPersonalId, payerFullName, payerEmail, payerPhone.
Updated about 4 hours ago