Modulate API Internal
Internal API for registered Google workload identities
UAT
Health
Liveness probe reporting the running build tag. The deploy gate polls this endpoint before docs and releases go live; use it to confirm which build UAT is currently serving.
Health check
Returns service status and database connectivity. No authentication required.
Responses
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/health
{
"data": {
"status": "ok",
"version": "v1",
"database": "connected",
"build": "partner-api-v202608201200"
},
"meta": {
"request_id": "req_abc123",
"api_version": "v1",
"timestamp": "2025-01-15T10:30:00Z"
},
"errors": []
}Successful Response
Account
Who am I: the verified Google service-account principal behind your bearer token, its organization or system scope, and the rate-limit policy applied to it. Start here to confirm a freshly minted identity token is accepted.
Get the authenticated service-account principal
Returns the Google service-account principal behind the bearer token — its principal id, permissions, explicit organization or system scope, and the rate-limit policy that applies to it. Organization, key, and prefix fields are null for a system-scoped principal. This is the fastest way to confirm a minted identity token is accepted.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/me \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"principal_id": "opaque-internal-subject",
"principal_type": "google_service_account",
"organization_id": null,
"organization_name": null,
"key_id": null,
"key_prefix": null,
"label": "Arise workload",
"environment": "uat",
"scopes": [
"partner:read"
],
"permissions": [
"partner:read"
],
"scope": {
"kind": "system",
"organization_id": null
},
"rate_limits": {
"standard_per_minute": 1200,
"ai_per_minute": 5,
"window_seconds": 60,
"guidance_per_minute": 600,
"hard_per_minute": 1200,
"burst_per_10_seconds": 300
}
},
"meta": {
"request_id": "req_internal_me",
"api_version": "v1"
},
"errors": []
}Successful Response
Get rate-limit status for the authenticated principal
Reports the live window for the Google service-account principal that authenticated this request. The keys collection is empty for a service-account caller; budget lives on data.principal. Source response models own the schema — this override supplies examples and prose only.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/rate-limit \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"organization_id": null,
"generated_at": "2026-08-20T06:04:16Z",
"window_seconds": 60,
"source": "live",
"default_limits": {
"standard_per_minute": 1200,
"ai_per_minute": 5
},
"principal": {
"principal_id": "opaque-internal-subject",
"principal_type": "google_service_account",
"standard": {
"used": 73,
"limit": 1200,
"remaining": 1127,
"reset_at": "2026-08-20T06:05:16Z"
},
"burst": {
"used": 0,
"limit": 300,
"remaining": 300,
"reset_at": "2026-08-20T06:05:16Z"
},
"endpoint_limits": {
"ai": {
"used": 0,
"limit": 5,
"remaining": 5,
"reset_at": "2026-08-20T06:05:16Z"
}
}
},
"keys": []
},
"meta": {
"request_id": "req_internal_rl",
"api_version": "v1"
},
"errors": []
}Successful Response
Merchants
The merchant portfolio visible to your principal's scope: paged listings, full merchant detail, and current lifecycle status.
List merchants
Paginated list of merchants in the partner's portfolio with filtering and sorting.
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:1000Items per page
- Type: stringnullablestatus
Filter by merchant status (active, closed, terminated, or other)
- Type: stringsearchmax length:200nullable
Search by DBA name or merchant ID
- Type: stringFormat: date-timenullableupdated
_since ISO-8601 timestamp (e.g. 2026-08-30T00:00:00Z; no offset means UTC). Returns merchants approved or closed at or after this time. It does not track other field edits (name, address, agent), so pair it with a periodic full sync.
- Type: stringnullablesort
_by Sort field
- Type: stringnullablesort
_order Sort direction
- Type: stringnullablecompliance
_status Filter by PCI compliance status
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants?page=1&page_size=200&status=active&sort_by=dba_name&sort_order=asc' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"dba_name": "Sunrise Coffee Co",
"legal_name": "Sunrise Coffee LLC",
"status": "active",
"processor": "TSYS",
"mcc_code": "5812",
"state": "CA",
"city": "San Francisco",
"onboarding_date": "2024-03-15T00:00:00+00:00",
"last_data_refresh": "2025-01-15T10:30:00+00:00",
"primary_agent_id": "8842",
"primary_agent_name": "Jordan Patel",
"partner_office_id": "120",
"partner_office_name": "Golden Gate Payments",
"pci_compliance": {
"status": "compliant",
"saq_due_date": "2025-12-31T00:00:00+00:00",
"last_updated": "2025-01-10T00:00:00+00:00"
}
},
{
"merchant_id": "925700000198472",
"dba_name": "The Barber Lounge",
"legal_name": "TBL Enterprises Inc",
"status": "active",
"processor": "TSYS",
"mcc_code": "7241",
"state": "TX",
"city": "Austin",
"onboarding_date": "2023-11-01T00:00:00+00:00",
"last_data_refresh": "2025-01-15T10:30:00+00:00",
"primary_agent_id": null,
"primary_agent_name": null,
"partner_office_id": "401",
"partner_office_name": null,
"pci_compliance": null
}
],
"meta": {
"request_id": "req_abc123",
"api_version": "v1",
"page": 1,
"page_size": 200,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "risecrm",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get merchant detail
Returns full detail for a single merchant in the partner's portfolio.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "925700000233734",
"dba_name": "Sunrise Coffee Co",
"legal_name": "Sunrise Coffee LLC",
"status": "active",
"processor": "TSYS",
"mcc_code": "5812",
"state": "CA",
"city": "San Francisco",
"address_line1": "123 Market St",
"postal_code": "94105",
"onboarding_date": "2024-03-15T00:00:00+00:00",
"last_data_refresh": "2025-01-15T10:30:00+00:00",
"primary_agent_id": "8842",
"primary_agent_name": "Jordan Patel",
"partner_office_id": "120",
"partner_office_name": "Golden Gate Payments",
"funding_program": "NEXT_DAY",
"funding_program_code": "NXDY"
},
"meta": {
"request_id": "req_def456",
"api_version": "v1",
"source": "risecrm",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get merchant status
Returns a concise status summary for a merchant.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/status \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "925700000233734",
"status": "active",
"onboarding_date": "2024-03-15T00:00:00+00:00",
"close_date": null,
"processor": "TSYS"
},
"meta": {
"request_id": "req_ghi789",
"api_version": "v1",
"source": "risecrm",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Compliance
PCI compliance standing per merchant: the current status and the history of changes behind it. These operations also appear under PCI Compliance — same endpoints, grouped by program name.
Get merchant compliance status
Returns current PCI compliance status for a merchant in the partner's portfolio.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/compliance \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "925700000233734",
"status": "compliant",
"saq": {
"type": "SAQ A",
"version": "4.0",
"status_date": "2025-01-10T00:00:00+00:00",
"due_date": "2025-12-31T00:00:00+00:00",
"last_changed": "2025-01-10T00:00:00+00:00",
"remediation": null
},
"scan": {
"status": "Pass",
"remediation_required": false,
"last_scan_date": "2025-01-05T00:00:00+00:00",
"next_scan_date": "2025-04-05T00:00:00+00:00"
},
"compliant_through_another_provider": false,
"last_updated": "2025-01-10T14:30:00+00:00"
},
"meta": {
"request_id": "req_comp01",
"api_version": "v1",
"source": "pci",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get merchant compliance history
Returns paginated compliance history for a merchant with optional date range filtering.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringFormat: date-timenullablestart
_date Start date filter (ISO-8601)
- Type: stringFormat: date-timenullableend
_date End date filter (ISO-8601)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/compliance/history?page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"recorded_at": "2025-01-10T00:00:00+00:00",
"status": "compliant",
"saq_type": "SAQ A",
"saq_status_date": "2025-01-10T00:00:00+00:00",
"next_scan_date": "2025-04-05T00:00:00+00:00"
},
{
"recorded_at": "2024-10-15T00:00:00+00:00",
"status": "non_compliant",
"saq_type": "SAQ A",
"saq_status_date": "2024-10-15T00:00:00+00:00",
"next_scan_date": "2025-01-05T00:00:00+00:00"
}
],
"meta": {
"request_id": "req_comp02",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "pci",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
PCI Compliance
PCI program view of the compliance endpoints: current standing and change history for a merchant. Identical to the operations under Compliance.
Get merchant compliance status
Returns current PCI compliance status for a merchant in the partner's portfolio.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/compliance \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "925700000233734",
"status": "compliant",
"saq": {
"type": "SAQ A",
"version": "4.0",
"status_date": "2025-01-10T00:00:00+00:00",
"due_date": "2025-12-31T00:00:00+00:00",
"last_changed": "2025-01-10T00:00:00+00:00",
"remediation": null
},
"scan": {
"status": "Pass",
"remediation_required": false,
"last_scan_date": "2025-01-05T00:00:00+00:00",
"next_scan_date": "2025-04-05T00:00:00+00:00"
},
"compliant_through_another_provider": false,
"last_updated": "2025-01-10T14:30:00+00:00"
},
"meta": {
"request_id": "req_comp01",
"api_version": "v1",
"source": "pci",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get merchant compliance history
Returns paginated compliance history for a merchant with optional date range filtering.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringFormat: date-timenullablestart
_date Start date filter (ISO-8601)
- Type: stringFormat: date-timenullableend
_date End date filter (ISO-8601)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/compliance/history?page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"recorded_at": "2025-01-10T00:00:00+00:00",
"status": "compliant",
"saq_type": "SAQ A",
"saq_status_date": "2025-01-10T00:00:00+00:00",
"next_scan_date": "2025-04-05T00:00:00+00:00"
},
{
"recorded_at": "2024-10-15T00:00:00+00:00",
"status": "non_compliant",
"saq_type": "SAQ A",
"saq_status_date": "2024-10-15T00:00:00+00:00",
"next_scan_date": "2025-01-05T00:00:00+00:00"
}
],
"meta": {
"request_id": "req_comp02",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "pci",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Deposits
TSYS ACH funding for one merchant: loaded control totals in a bounded processing-date window, the signed funding explanation behind each deposit, and the processor batches it can be tied to. Processor dates only; coverage is reported as unknown and Fiserv funding is not available.
List ACH deposits for a merchant
Loaded ACH entries for one merchant, newest processing date first. Defaults to the last 30 processing days; maximum date span is 90 days. C lines combine across references; other lines group by reference. Reconciled zero-net N-only groups are omitted. Counts and pagination are entry-based. Deposit IDs are opaque v2 identities: refetch stored deposits and restart pagination after this change; old control-total IDs return 404. TSYS ACH funding only: Fiserv-processed merchants and merchants without a bindable TSYS bank identity return 404 RESOURCE_NOT_FOUND with a message naming the reason; deposits are never reported as an empty page. Amounts are signed decimal dollars. Effective dates are processor dates and do not confirm receipt by the merchant's bank. meta.coverage reports loaded history and daily freshness as unknown; an empty page never means no funding.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: stringFormat: datenullabledate
_from First processing date (YYYY-MM-DD, inclusive)
- Type: stringFormat: datenullabledate
_to Last processing date (YYYY-MM-DD, inclusive)
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/deposits?date_from=2026-08-17&date_to=2026-09-15&page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"deposit_id": "3f1c2b9a7d5e4c6b8a0f1e2d3c4b5a69",
"processing_date": "2026-09-10",
"amount": "10.01",
"entry_type": "combined",
"batch_count": 1,
"reference_number": null,
"card_deposits": "11.02",
"fees": "-1.01",
"chargebacks": "0.00",
"other": "0.00",
"effective_on": "2026-09-11",
"effective_through": "2026-09-12",
"has_unknown_effective_date": false,
"cycle": "EARLY",
"status": "funded",
"reconciled": true,
"detail_count": 2
}
],
"meta": {
"request_id": "req_dep01",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "alloydb",
"as_of": "2026-09-15T12:00:00+00:00",
"data_coverage": "tsys_only",
"coverage": {
"status": "unknown",
"message": "Historical coverage and daily freshness have not been verified. No loaded records does not mean no funding. Effective dates are processor dates and do not confirm receipt by your bank."
},
"applied_window": {
"from": "2026-08-17",
"to": "2026-09-15"
}
},
"errors": []
}Successful Response
Get an ACH deposit
Signed funding explanation for one deposit: category breakdown, every funding line, and processor batches whose reference and batch date match its deposit and fee lines. TSYS ACH funding only: Fiserv-processed merchants and merchants without a bindable TSYS bank identity return 404 RESOURCE_NOT_FOUND with a message naming the reason; deposits are never reported as an empty page. Amounts are signed decimal dollars. Effective dates are processor dates and do not confirm receipt by the merchant's bank. meta.coverage reports loaded history and daily freshness as unknown; an empty page never means no funding.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
- Type: stringdeposit
_id min length:1max length:64required32-character lowercase hexadecimal identifier from a previous response
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/deposits/3f1c2b9a7d5e4c6b8a0f1e2d3c4b5a69 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"deposit_id": "3f1c2b9a7d5e4c6b8a0f1e2d3c4b5a69",
"processing_date": "2026-09-10",
"amount": "10.01",
"card_deposits": "11.02",
"fees": "-1.01",
"chargebacks": "0.00",
"other": "0.00",
"effective_on": "2026-09-11",
"effective_through": "2026-09-12",
"has_unknown_effective_date": false,
"cycle": "EARLY",
"status": "funded",
"reconciled": true,
"detail_count": 2,
"breakdown": [
{
"transaction_type": "DEPOSIT",
"amount": "11.02"
},
{
"transaction_type": "FEES",
"amount": "-1.01"
}
],
"lines": [
{
"transaction_type": "DEPOSIT",
"card_type": "VISA",
"amount": "11.02",
"funding_amount": "11.02",
"effective_date": "2026-09-11",
"batch_date": "2026-09-10",
"reference_number": "123456",
"description": "Batch",
"case_number": null
},
{
"transaction_type": "FEES",
"card_type": null,
"amount": "1.01",
"funding_amount": "-1.01",
"effective_date": "2026-09-12",
"batch_date": null,
"reference_number": null,
"description": "Monthly fees",
"case_number": null
}
],
"related_batches": [
{
"header_id": "9b8a7c6d5e4f3a2b1c0d9e8f7a6b5c4d",
"attribution_status": "unique",
"portal_batch_number": "123456",
"batch_date": "2026-09-10",
"reference_number": "123456",
"amount": "11.02",
"ach_deposit_amount": "11.02",
"ach_fee_amount": null,
"amount_comparison": "equal"
}
]
},
"meta": {
"request_id": "req_dep02",
"api_version": "v1",
"source": "alloydb",
"as_of": "2026-09-15T12:00:00+00:00",
"data_coverage": "tsys_only",
"coverage": {
"status": "unknown",
"message": "Historical coverage and daily freshness have not been verified. No loaded records does not mean no funding. Effective dates are processor dates and do not confirm receipt by your bank."
}
},
"errors": []
}Successful Response
Get a processor batch related to an ACH deposit
One DDF batch header related to the deposit, with its child transactions when the loaded records can isolate them exactly; otherwise transaction_status is "unavailable" and the list is empty. Batch amounts are card volume before funding adjustments. TSYS ACH funding only: Fiserv-processed merchants and merchants without a bindable TSYS bank identity return 404 RESOURCE_NOT_FOUND with a message naming the reason; deposits are never reported as an empty page. Amounts are signed decimal dollars. Effective dates are processor dates and do not confirm receipt by the merchant's bank. meta.coverage reports loaded history and daily freshness as unknown; an empty page never means no funding.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
- Type: stringdeposit
_id min length:1max length:64required32-character lowercase hexadecimal identifier from a previous response
- Type: stringheader
_id min length:1max length:64required32-character lowercase hexadecimal identifier from a previous response
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/deposits/3f1c2b9a7d5e4c6b8a0f1e2d3c4b5a69/batches/9b8a7c6d5e4f3a2b1c0d9e8f7a6b5c4d \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"header_id": "9b8a7c6d5e4f3a2b1c0d9e8f7a6b5c4d",
"attribution_status": "unique",
"portal_batch_number": "123456",
"batch_date": "2026-09-10",
"reference_number": "123456",
"amount": "11.02",
"ach_deposit_amount": "11.02",
"ach_fee_amount": null,
"amount_comparison": "equal",
"deposit_id": "3f1c2b9a7d5e4c6b8a0f1e2d3c4b5a69",
"transaction_status": "exact",
"transaction_message": null,
"transaction_count": 2,
"transactions": [
{
"transaction_id": "c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6",
"transaction_date": "2026-09-10",
"transaction_type": "sale",
"amount": "12.02",
"card_brand": "VISA",
"card_last4": "1111"
},
{
"transaction_id": "f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1",
"transaction_date": "2026-09-10",
"transaction_type": "refund",
"amount": "1.00",
"card_brand": "VISA",
"card_last4": "1111"
}
]
},
"meta": {
"request_id": "req_dep03",
"api_version": "v1",
"source": "alloydb",
"as_of": "2026-09-15T12:00:00+00:00",
"data_coverage": "tsys_only",
"coverage": {
"status": "unknown",
"message": "Historical coverage and daily freshness have not been verified. No loaded records does not mean no funding. Effective dates are processor dates and do not confirm receipt by your bank."
}
},
"errors": []
}Successful Response
Pricing
TSYS pricing as boarded: a merchant's current price plan, the history of pricing changes, and a portfolio-wide listing.
Get current TSYS pricing
Returns the current TSYS PPM pricing configuration for a merchant.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/pricing/tsys/current \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "925700000233734",
"pricing_model": "IC+",
"summary": {
"pricing_model": "IC+",
"pricing_text": "IC+ 25 bps eff. (15 + 10 OVF) + $0.10",
"primary_rate_bps": 15,
"bankcard_other_volume_fee_bps": 10,
"amex_other_volume_fee_bps": 60,
"pin_debit_other_volume_fee_bps": null,
"effective_rate_bps": 25,
"per_transaction_fee": "0.10",
"monthly_fee": "9.95",
"annual_fee": null,
"exceptions": [
{
"card_type": "Amex",
"rate": 2.95
}
]
},
"categories": [
{
"name": "Discount",
"items": [
{
"fee_item_name": "Discount Rate",
"percent": 0.15,
"per_item": null,
"qual_percent": null,
"qual_per_item": null,
"billing_frequency": "Monthly",
"statement_description": null
}
]
},
{
"name": "Authorization Trxns",
"items": [
{
"fee_item_name": "Auth Fee",
"percent": null,
"per_item": "0.10",
"qual_percent": null,
"qual_per_item": null,
"billing_frequency": "Monthly",
"statement_description": null
}
]
}
],
"as_of": "2025-01-01T00:00:00+00:00"
},
"meta": {
"request_id": "req_price01",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-01T00:00:00+00:00"
},
"errors": []
}Successful Response
Get TSYS pricing history
Returns pricing change history for a merchant over a configurable lookback period.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: integermonthsmin:1max:36
Lookback period in months
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/pricing/tsys/history?months=12' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "925700000233734",
"changes": [
{
"file_date": "2025-01-01",
"fee_category": "Discount",
"fee_item_name": "Discount Rate",
"old_value": 0.1,
"new_value": 0.15,
"change_type": "percent"
},
{
"file_date": "2024-10-01",
"fee_category": "Authorization Trxns",
"fee_item_name": "Auth Fee",
"old_value": "0.08",
"new_value": "0.10",
"change_type": "per_item"
}
]
},
"meta": {
"request_id": "req_price02",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
List portfolio TSYS pricing
Paginated current TSYS pricing for all merchants in the partner's portfolio. effective_rate_bps includes Other Volume Fee (OVF) where applicable.
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringnullablepricing
_model Filter: IC, Tiered, or Flat Rate
- Type: stringsearchmax length:200nullable
Search by merchant ID or DBA name
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/pricing/tsys?page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"dba_name": "Sunrise Coffee Co",
"pricing_model": "IC+",
"summary": {
"pricing_model": "IC+",
"pricing_text": "IC+ 15 bps + $0.10",
"primary_rate_bps": 15,
"bankcard_other_volume_fee_bps": null,
"amex_other_volume_fee_bps": null,
"pin_debit_other_volume_fee_bps": null,
"effective_rate_bps": 15,
"per_transaction_fee": "0.10",
"monthly_fee": "9.95",
"annual_fee": null,
"exceptions": []
},
"categories": [],
"as_of": "2025-01-01T00:00:00+00:00"
},
{
"merchant_id": "925700000198472",
"dba_name": "The Barber Lounge",
"pricing_model": "Flat Rate",
"summary": {
"pricing_model": "Flat Rate",
"pricing_text": "2.75%",
"primary_rate_bps": 275,
"bankcard_other_volume_fee_bps": null,
"amex_other_volume_fee_bps": null,
"pin_debit_other_volume_fee_bps": null,
"effective_rate_bps": 275,
"per_transaction_fee": null,
"monthly_fee": null,
"annual_fee": null,
"exceptions": []
},
"categories": [],
"as_of": "2025-01-01T00:00:00+00:00"
}
],
"meta": {
"request_id": "req_price03",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2025-01-01T00:00:00+00:00"
},
"errors": []
}Successful Response
Processor Profiles
Processor-side merchant records: the TSYS profile with its demographic change history, and the Fiserv Omaha profile where a merchant is boarded there.
Get TSYS processor profile
Returns the complete TSYS processor profile for a merchant in your portfolio. The profile contains 11 structured sections covering every aspect of the merchant's TSYS account configuration:
| Section | Description |
|---|---|
general |
Merchant name, SIC code, class code, merchant type, and account status |
location |
Street address, city, state, ZIP (9-digit codes formatted as XXXXX-XXXX), and country |
hierarchy |
TSYS bank and agent/ISO codes that place the merchant in the processing hierarchy |
card_networks |
Acceptance flags and network IDs for Visa, Mastercard, Amex (including OptBlue), Discover, JCB, and Diners |
interchange_qualification |
Eligibility flags for interchange programs — Visa CPS, Supermarket, EIRF; Mastercard Merit; Discover |
banking |
Primary, chargeback, and discount DDA/routing numbers plus bank name and ACH destination |
destination_routing |
Transaction routing codes for deposits, adjustments, chargebacks, reversals, and batches |
dates |
Key lifecycle dates — opened, first/last deposit, last activity, status change, and last TSYS data sync |
flags |
Operational flags including EDC, Visa/MC eligibility, and MTD maintenance |
contact |
Phone numbers, email, rep code, officers, and alternate name |
tax |
Federal and state tax IDs |
Sensitive data masking
Banking and tax fields are always masked in Partner API responses — only the last 4 digits are visible. There is no option to unmask these values via the API.
- DDA/routing numbers: Displayed as
****9012 - Tax IDs: Displayed in SSN/EIN format as
***-**-6789
Account status codes
The status field maps TSYS account status codes to human-readable labels:
| Code | Label |
|---|---|
| (empty) | Open |
I |
Inactive |
F |
Fraud |
S |
Suspect |
Z |
No Auth |
C |
Closed |
D |
Delete |
B |
No Post |
Data freshness
Profile data is synced from TSYS flat files. The last_synced field (and dates.last_sync_date)
indicates when the most recent data was loaded. Check meta.as_of in the response for the
data freshness timestamp.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/processor-profile/tsys \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"mid": "925700000233734",
"merchant_name": "Sunrise Coffee Co",
"processor": "TSYS",
"status": "Open",
"status_label": "Open",
"last_synced": "2025-01-15",
"general": {
"merchant_name": "Sunrise Coffee Co",
"sic_code": "5812",
"class_code": "R",
"merchant_type": "Retail",
"status": "Open",
"status_label": "Open"
},
"location": {
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip_code": "78701-1234",
"country_code": "US"
},
"hierarchy": {
"bank_code": "001234",
"agent_code": "5678"
},
"card_networks": {
"amex_id": "AMX123",
"amex_submitter_id": "SUB456",
"amex_cap_id": null,
"amex_optblue": true,
"amex_acceptance": true,
"discover_id": "DSC789",
"discover_map_flag": false,
"discover_acceptance": true,
"discover_cash_acceptance": false,
"mc_ica": "MC123",
"mc_acceptance": true,
"mc_cash_acceptance": false,
"visa_acceptance": true,
"visa_cash_acceptance": false,
"visa_eligibility": true,
"mc_eligibility": true,
"jcb_acceptance": false,
"diners_acceptance": false,
"diners_number": null
},
"interchange_qualification": {
"visa_cps1": true,
"visa_cps2": false,
"visa_smk1": false,
"visa_smk2": false,
"visa_eps": false,
"mc_merit": true,
"discover_eligible": true
},
"banking": {
"dda_masked": "****9012",
"routing_masked": "****0021",
"bank_name": "Chase",
"ach_destination": "ACH01",
"funding_program": "NEXT_DAY",
"funding_program_code": "NXDY",
"chargeback_dda_masked": "****1098",
"chargeback_routing_masked": "****0089",
"discount_dda_masked": null,
"discount_routing_masked": null
},
"destination_routing": {
"dest_global": "G",
"dest_deposit": "D",
"dest_adjustment": "A",
"dest_chargeback": "C",
"dest_reversal": "R",
"dest_batch": "B"
},
"dates": {
"opened_date": "2020-03-15",
"first_deposit_date": "2020-04-01",
"last_deposit_date": "2025-01-10",
"last_activity_date": "2025-01-14",
"status_change_date": null,
"last_sync_date": "2025-01-15"
},
"flags": {
"edc_flags": "E1",
"ach_destination": "ACH01",
"visa_eligibility": true,
"mc_eligibility": true,
"mtd_maintenance": false
},
"contact": {
"phone_1": "512-555-0100",
"phone_2": null,
"email": "info@sunrisecoffee.com",
"rep_code": "REP01",
"officer_1": "John Smith",
"officer_2": null,
"other_name": null
},
"tax": {
"federal_tax_id_masked": "***-**-6789",
"state_tax_id_masked": "***-**-4321"
}
},
"meta": {
"request_id": "req_pp01",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T00:00:00+00:00"
},
"errors": []
}TSYS processor profile retrieved successfully.
Get TSYS demographic change history
Returns chronological demographic-change events for a TSYS merchant — bank account/routing swaps, EIN/SSN changes, DBA & legal-name renames, MCC (SIC) drift, and principal changes — grouped by file date, with severity per change. Sensitive values (DDA, routing, EIN, SSN) are masked. Coverage flags indicate which feeds back the history (acq_merchant_detail always; mif only for banks 9257/9398).
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: booleaninclude
_noise Include onboarding-window and known-prefill noise events that are suppressed by default.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000256909/processor-profile/tsys/history?include_noise=false' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"mid": "925700000256909",
"bank_code": "9257",
"first_tracked": "2026-04-30",
"coverage": {
"acq_merchant_detail": true,
"mif": true
},
"events": [
{
"date": "2026-08-18",
"change_count": 1,
"severity": "high",
"changes": [
{
"field": "routing",
"category": "banking",
"old": "****0021",
"new": "****0089",
"severity": "high"
}
]
}
]
},
"meta": {
"request_id": "req_tsys_history",
"api_version": "v1",
"source": "alloydb",
"as_of": "2026-08-20T08:00:00Z"
},
"errors": []
}Successful Response
Get Fiserv Omaha processor profile
Returns the complete Fiserv Omaha processor profile for a merchant in your portfolio. The profile contains 11 structured sections covering every aspect of the merchant's Fiserv Omaha account configuration:
| Section | Description |
|---|---|
processing |
System/Principal/Agent hierarchy, deposit type, fee/auth grids, dates |
fees |
Transaction fees — batch header, sales, returns, chargeback, retrieval, ACH reject, TIN, EIDS |
amex |
Amex OptBlue enrollment and program |
banking |
DDA, routing, account type, hold/float days, disbursement flags |
compliance |
TIN status, tax ID, TIN type, IRS name, TURF code |
terminal |
EMV, PIN, mag stripe, POS type, TransArmor, terminal count |
statement_settings |
Statement hold, mail destination, IC detail, debit fee print options |
association |
Per-brand passthrough fee flags for Visa Credit/Debit, MC Credit/Debit, Discover |
limits_and_risk |
Auth/sale/return limits, daily estimates, risk thresholds, velocity controls |
contact |
Name, email, phone, CS phone, language, address |
correspondence |
Statement mail, 12B letters, confirm letters, help desk |
Sensitive data masking
Banking and compliance fields are always masked — only the last 4 digits are visible. There is no option to unmask these values via the API.
- DDA/routing numbers: Displayed as
****4567 - Tax IDs: Displayed in SSN/EIN format as
***-**-6726
Data freshness
Profile data is synced from Fiserv AccessOne. The last_synced field indicates when the
most recent data was loaded. Check meta.as_of in the response for the data freshness timestamp.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/407150230115438/processor-profile/omaha \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"mid": "407150230115438",
"mpaid": "MPAID123",
"merchant_name": "Polar Bear Ice Cream",
"processor": "Fiserv Omaha FSP",
"status": "Open",
"last_synced": "2026-03-06T12:00:00+00:00",
"processing": {
"sys_prin_agent": "4291/2300/0100",
"deposit_type": "ETC",
"etc_type": "MOTO",
"etc_cutoff": "EST",
"fee_grid": "GRID01",
"auth_grid": "AUTH01",
"auth_level": "L3",
"discount_table": "PROMO01",
"avg_ticket": 25.5,
"open_date": "2024-01-15",
"last_batch_activity": "2026-03-05",
"last_active_date": "2026-03-06",
"next_review_date": "2027-01-15"
},
"fees": {
"batch_header": 0,
"sales_trans": 0.1,
"return_trans": 0.1,
"chargeback": 25,
"retrieval": 15,
"ach_reject": 25,
"invalid_tin": 100,
"eids": 0.05
},
"amex": {
"optblue": true,
"program": "CT43 OptBlue"
},
"banking": {
"disbursement_method": "ACH",
"dda_number_masked": "****3210",
"routing_number_masked": "****1234",
"account_type": "C",
"hold_days": 2,
"float_days": 1,
"currency": "USD",
"deficit_flag": "Y",
"include_adjustments": true,
"include_deposits": true,
"include_discounts": false,
"include_generic_debit": false
},
"compliance": {
"tin_status": "IRS Validated",
"tin_status_raw": "VALID - IRS Match",
"tin_validation_date": "2025-06-15",
"tax_id_masked": "***-**-6726",
"tin_type": "EIN",
"irs_name": "Polar Bear LLC",
"business_owner_match": "Y",
"site_access": "Storefront",
"turf_code": "TURF01"
},
"terminal": {
"emv_enabled": true,
"pin_capable": false,
"mag_stripe": "Full Track Read",
"pos_type": "9",
"terminal_count": 3,
"transarmor_active": true,
"security_level": "01",
"encryption_type": "AES",
"token_type": "TOKEN01",
"verify_value": "VERIFY123"
},
"statement_settings": {
"hold_flag": false,
"mail_to": "M",
"ic_detail": "D",
"debit_fee_print": "S"
},
"association": {
"visa_credit": {
"dues_assessments": true,
"apf_acq_support": true,
"fanf_nabu": true,
"isa": false,
"cross_border": true,
"trans_integrity": false,
"misuse_auth": false,
"zero_floor": true,
"cvc2": false,
"kilobyte": false,
"data_usage": false
},
"visa_debit": {
"dues_assessments": true,
"apf_acq_support": true,
"fanf_nabu": false,
"isa": false,
"cross_border": false,
"trans_integrity": false,
"misuse_auth": false,
"zero_floor": true,
"cvc2": false,
"kilobyte": false,
"data_usage": false
},
"mc_credit": {
"dues_assessments": true,
"apf_acq_support": true,
"fanf_nabu": true,
"isa": false,
"cross_border": false,
"trans_integrity": false,
"misuse_auth": false,
"zero_floor": false,
"cvc2": true,
"kilobyte": false,
"data_usage": false
},
"mc_debit": {
"dues_assessments": false,
"apf_acq_support": false,
"fanf_nabu": false,
"isa": false,
"cross_border": false,
"trans_integrity": false,
"misuse_auth": false,
"zero_floor": false,
"cvc2": false,
"kilobyte": false,
"data_usage": false
},
"discover": {
"dues_assessments": true,
"apf_acq_support": false,
"fanf_nabu": false,
"isa": false,
"cross_border": false,
"trans_integrity": false,
"misuse_auth": false,
"zero_floor": false,
"cvc2": false,
"kilobyte": false,
"data_usage": true
}
},
"limits_and_risk": {
"limits": {
"max_auth_amount": 5000,
"max_sale_amount": 5000,
"max_return_amount": 1000,
"daily_fund_limit": 10000,
"thirty_day_limit": 100000
},
"estimates": {
"avg_ticket": 25.5,
"daily_auth_count": 50,
"daily_auth_amount": 1250,
"daily_deposit": 1000,
"weekly_deposit": 5000,
"weekly_batches": 7
},
"risk_thresholds": {
"key_entered_pct": 10,
"return_vol_pct": 5,
"return_count_pct": 3,
"mtd_chargeback_pct": 0.5,
"voice_auth_pct": 1,
"below_floor_pct": 2
},
"velocity_controls": {
"daily_trans_per_card": 2,
"same_amt_auths": 3,
"same_amt_pct": 5,
"cardholder_occurrences": 10,
"max_tktos": 5,
"auth_decline_pct": 8
}
},
"contact": {
"name": "Jane Doe",
"email": "jane@polarbear.com",
"phone": "555-123-4567",
"cs_phone": "800-555-0199",
"language": "EN",
"address": "456 Arctic Ave",
"city": "Anchorage",
"state": "AK",
"zip": "99501"
},
"correspondence": {
"statement_mail": "M",
"letter_12b": "S",
"confirm_letters": "Y",
"help_desk": "HC"
}
},
"meta": {
"request_id": "req_omaha01",
"api_version": "v1",
"source": "bigquery",
"as_of": "2026-03-06T12:00:00+00:00"
},
"errors": []
}Fiserv Omaha processor profile retrieved successfully.
Transactions
Settled card transactions from the processor: portfolio and per-merchant listings plus daily summaries.
List transactions across portfolio
Paginated transaction detail list across all merchants in the partner portfolio. Defaults to the last 30 days; maximum date span is 90 days (stricter than the per-merchant route). Pass processor=tsys or processor=fiserv to narrow the merchant set before querying — recommended for large portfolios. Includes TSYS and Fiserv settled transactions. The feed can lag processor batch ingestion; same-day activity is not guaranteed. Dates before 2025-06-01 use legacy history; later dates use Atlas. auth_code carries the Atlas approval code when available; earlier legacy rows preserve authorization codes when available.
Query Parameters
- Type: stringFormat: datenullabledate
_from Start date (YYYY-MM-DD)
- Type: stringFormat: datenullabledate
_to End date (YYYY-MM-DD)
- Type: stringtimezonemax length:50nullabledeprecated
Deprecated and ignored. Dates are processor business dates and carry no time of day, so no timezone is applied. An unknown IANA zone name returns 422.
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringcard
_brand max length:50nullableFilter by card brand (Visa, Mastercard, etc.)
- Type: stringcard
_type max length:50nullableFilter by card type (credit, debit)
- Type: stringbatch
_id max length:100nullableFilter by settlement batch ID
- Type: stringmerchant
_id max length:50nullableFilter to one merchant in the portfolio
- Type: stringprocessormax length:20nullable
Optional processor filter (tsys or fiserv). Suggested for large portfolios to shrink the merchant set before querying. Omitting scans the full portfolio.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/transactions?date_from=2025-01-01&date_to=2025-01-31&timezone=UTC&page=1&page_size=25&processor=tsys' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"transaction_id": "txn_2a15174ddee7b321eb30172aa6fd41aa",
"processor": "tsys",
"date": "2025-01-15",
"card_brand": "Visa",
"card_type": "credit",
"card_last4": "4242",
"sale_amount": "125.50",
"refund_amount": "0.00",
"net_amount": "125.50",
"batch_id": "20250115001",
"auth_code": "A12345"
},
{
"merchant_id": "925700000111111",
"transaction_id": "txn_af6c5682002e97f6cce26e51b8649797",
"processor": "tsys",
"date": "2025-01-15",
"card_brand": "Mastercard",
"card_type": "debit",
"card_last4": "8910",
"sale_amount": "42.00",
"refund_amount": "0.00",
"net_amount": "42.00",
"batch_id": "20250115002",
"auth_code": "B67890"
}
],
"meta": {
"request_id": "req_txn_portfolio",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"timezone": "UTC"
},
"errors": []
}Successful Response
Get daily transaction summary
Returns daily aggregated settled transaction totals for a TSYS or Fiserv merchant over a date range. Defaults to the last 30 days; maximum date span is 365 days (wider ranges return 422). The feed can lag processor batch ingestion; same-day activity is not guaranteed. Dates before 2025-06-01 use the legacy history source; later dates use Atlas.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: stringFormat: datenullabledate
_from Start date (YYYY-MM-DD)
- Type: stringFormat: datenullabledate
_to End date (YYYY-MM-DD)
- Type: stringtimezonemax length:50nullabledeprecated
Deprecated and ignored. Dates are processor business dates and carry no time of day, so no timezone is applied. An unknown IANA zone name returns 422.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/transactions/daily?date_from=2025-01-01&date_to=2025-01-03&timezone=UTC' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"date": "2025-01-01",
"transaction_count": 47,
"volume": "12450.00",
"refund_count": 2,
"refund_volume": "150.00",
"net_volume": "12300.00",
"batch_count": 3
},
{
"date": "2025-01-02",
"transaction_count": 52,
"volume": "14200.00",
"refund_count": 1,
"refund_volume": "75.00",
"net_volume": "14125.00",
"batch_count": 3
},
{
"date": "2025-01-03",
"transaction_count": 38,
"volume": "9800.00",
"refund_count": 0,
"refund_volume": "0.00",
"net_volume": "9800.00",
"batch_count": 2
}
],
"meta": {
"request_id": "req_txn01",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"timezone": "UTC"
},
"errors": []
}Successful Response
List transactions
Paginated settled transaction detail list for a TSYS or Fiserv merchant with card brand and batch filters. Defaults to the last 30 days; maximum date span is 365 days (wider ranges return 422). The feed can lag processor batch ingestion; same-day activity is not guaranteed. auth_code is the processor approval code when available on Atlas rows. Earlier history preserves legacy authorization codes. merchant_reference is nullable. Pages reach at most the first 500,000 rows of a query (page x page_size); deeper pages return 422. Narrow the window instead of paging deeper: one portfolio day (~275k rows) fits, so sync day by day.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: stringFormat: datenullabledate
_from Start date (YYYY-MM-DD)
- Type: stringFormat: datenullabledate
_to End date (YYYY-MM-DD)
- Type: stringtimezonemax length:50nullabledeprecated
Deprecated and ignored. Dates are processor business dates and carry no time of day, so no timezone is applied. An unknown IANA zone name returns 422.
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringcard
_brand max length:50nullableFilter by card brand (Visa, Mastercard, etc.)
- Type: stringcard
_type max length:50nullableFilter by card type (credit, debit)
- Type: stringbatch
_id max length:100nullableFilter by settlement batch ID
- Type: stringmerchant
_reference max length:100nullableExact normalized merchant reference (lowercase, leading zero and ASCII whitespace padding removed)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/transactions?date_from=2025-01-01&date_to=2025-01-31&timezone=UTC&page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"transaction_id": "txn_2a15174ddee7b321eb30172aa6fd41aa",
"processor": "tsys",
"date": "2025-01-15",
"card_brand": "Visa",
"card_type": "credit",
"card_last4": "4242",
"sale_amount": "125.50",
"refund_amount": "0.00",
"net_amount": "125.50",
"batch_id": "20250115001",
"auth_code": "A12345"
},
{
"merchant_id": "925700000233734",
"transaction_id": "txn_af6c5682002e97f6cce26e51b8649797",
"processor": "tsys",
"date": "2025-01-15",
"card_brand": "Mastercard",
"card_type": "debit",
"card_last4": "8910",
"sale_amount": "42.00",
"refund_amount": "0.00",
"net_amount": "42.00",
"batch_id": "20250115001",
"auth_code": "A12345"
}
],
"meta": {
"request_id": "req_txn02",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"timezone": "UTC"
},
"errors": []
}Successful Response
Gateway Transactions
Gateway-level transaction records for merchants on a supported gateway, with per-transaction detail lookups.
List gateway transactions
Paginated gateway transactions for a merchant with action type and status filters.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: integerdaysmin:1max:365
Lookback period in days
- Type: stringnullableaction
_type Filter by action type
- Type: stringnullablestatus
Filter by status
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/gateway-transactions?page=1&page_size=25&days=30' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"gateway_transaction_id": "8734291056",
"gateway": "nmi",
"order_id": "ORD-20250115-001",
"action_type": "sale",
"status": "complete",
"amount": "59.99",
"card_type": "visa",
"last_four": "4242",
"timestamp": "2025-01-15T14:32:00+00:00",
"auth_code": "A12345"
},
{
"gateway_transaction_id": "8734291057",
"gateway": "nmi",
"order_id": null,
"action_type": "refund",
"status": "complete",
"amount": "25.00",
"card_type": "mastercard",
"last_four": "8910",
"timestamp": "2025-01-15T15:10:00+00:00",
"auth_code": null
}
],
"meta": {
"request_id": "req_gw01",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "nmi",
"as_of": "2025-01-15T15:30:00+00:00"
},
"errors": []
}Successful Response
Get gateway transaction
Returns detail for a single gateway transaction.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
- Type: stringgateway
_txn _id min length:1max length:100requiredGateway transaction ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/gateway-transactions/8734291056 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"gateway_transaction_id": "8734291056",
"gateway": "nmi",
"order_id": "ORD-20250115-001",
"action_type": "sale",
"status": "complete",
"amount": "59.99",
"card_type": "visa",
"last_four": "4242",
"timestamp": "2025-01-15T14:32:00+00:00",
"auth_code": "A12345"
},
"meta": {
"request_id": "req_gw02",
"api_version": "v1",
"source": "nmi",
"as_of": "2025-01-15T15:30:00+00:00"
},
"errors": []
}Successful Response
Statements
Monthly merchant statements: portfolio and per-merchant listings, statement metadata, and the statement PDF itself.
List statements across portfolio
Paginated metadata-only statement list across all merchants in the partner portfolio, one statement month per request: year and month are required (a request without them returns 422). Page through each month, then move to the next; a month typically answers in a few seconds. The per-merchant statement list needs no filter.
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:1000Items per page
- Type: integeryearmin:2000max:2100nullable
Statement year. Required on this route (with month).
- Type: integermonthmin:1max:12nullable
Statement month (1-12). Required on this route (with year).
- Type: stringnullablestatement
_type Filter by statement type
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/statements?page=1&page_size=1000&year=2025&month=1' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"statement_id": "tsys_100001",
"merchant_id": "925700000233734",
"period": "2025-01",
"statement_type": "standard",
"source": "tsys",
"available_at": "2025-02-03T00:00:00+00:00",
"has_pdf": true,
"is_primary": true
},
{
"statement_id": "fiserv_200001",
"merchant_id": "925700000198472",
"period": "2025-01",
"statement_type": "standard",
"source": "fiserv",
"available_at": "2025-01-31",
"has_pdf": true,
"is_primary": true
},
{
"statement_id": "custom_abc123",
"merchant_id": "925700000233734",
"period": "2025-01",
"statement_type": "custom",
"source": "cadence",
"available_at": "2025-02-05T12:00:00+00:00",
"has_pdf": true,
"is_primary": true
}
],
"meta": {
"request_id": "req_stmt01",
"api_version": "v1",
"page": 1,
"page_size": 1000,
"total_count": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
List statements
Paginated list of processor and custom statements for a merchant.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: integeryearmin:2000max:2100nullable
Filter by year
- Type: integermonthmin:1max:12nullable
Filter by month
- Type: stringnullablestatement
_type Filter by statement type
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/statements?page=1&page_size=25&year=2025&month=1' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"statement_id": "custom_abc123",
"merchant_id": "925700000233734",
"period": "2025-01",
"statement_type": "custom",
"source": "cadence",
"available_at": "2025-02-05T12:00:00+00:00",
"has_pdf": true,
"is_primary": true
},
{
"statement_id": "tsys_100001",
"merchant_id": "925700000233734",
"period": "2025-01",
"statement_type": "standard",
"source": "tsys",
"available_at": "2025-02-03T00:00:00+00:00",
"has_pdf": true,
"is_primary": false
}
],
"meta": {
"request_id": "req_stmt02",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get statement metadata
Returns metadata for a single statement including period, type, and availability.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
- Type: stringstatement
_id min length:1max length:512requiredStatement ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/statements/tsys_100001 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"statement_id": "tsys_100001",
"merchant_id": "925700000233734",
"period": "2025-01",
"statement_type": "standard",
"source": "tsys",
"available_at": "2025-02-03T00:00:00+00:00",
"has_pdf": true,
"total_volume": "125000.00",
"total_fees": "3250.00",
"total_settled": "121750.00"
},
"meta": {
"request_id": "req_stmt03",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Download statement PDF
Download a statement as raw PDF stream or base64-encoded JSON. Use ?format=base64 for JSON delivery.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
- Type: stringstatement
_id min length:1max length:512requiredStatement ID
Query Parameters
- Type: stringnullableformat
Delivery format: stream (raw PDF) or base64 (JSON envelope)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/925700000233734/statements/tsys_100001/pdf?format=base64' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"statement_id": "tsys_100001",
"format": "base64",
"content_type": "application/pdf",
"size_bytes": 45230,
"pdf_base64": "JVBERi0xLjQK..."
},
"meta": {
"request_id": "req_stmt04",
"api_version": "v1",
"source": "gcs",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Residuals
Monthly residual reporting: payout summaries, per-merchant earnings, adjustments, withholds, trends, and asynchronous exports with status and download endpoints.
- get/api/partner/residuals/reports
- get/api/partner/residuals/reports/{year}/{month}/summary
- get/api/partner/residuals/reports/{year}/{month}/merchants
- get/api/partner/residuals/reports/{year}/{month}/adjustments
- get/api/partner/residuals/reports/{year}/{month}/withholds
- get/api/partner/residuals/reports/trend
- get/api/partner/residuals/reports/{year}/{month}/top-merchants
- post/api/partner/residuals/reports/{year}/{month}/merchants/export
- get/api/partner/residuals/exports/{export_id}
- get/api/partner/residuals/exports/{export_id}/download
- post/api/partner/residuals/explain
List available reports
Returns the list of available residual report months for the partner's organization.
Query Parameters
- Type: stringFormat: date-timenullableupdated
_since ISO-8601 timestamp for incremental sync
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/reports \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"year": 2025,
"month": 1,
"available_at": "2025-02-05T00:00:00Z",
"report_run_id": "rpt_2025_01_a1b2c3d4e5f6",
"report_status": "final",
"data_cutoff_at": "2025-02-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
},
{
"year": 2024,
"month": 12,
"available_at": "2025-01-05T00:00:00Z",
"report_run_id": "rpt_2024_12_f6e5d4c3b2a1",
"report_status": "final",
"data_cutoff_at": "2025-01-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
}
],
"meta": {
"request_id": "req_res01",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get payout summary
Returns aggregated payout summary including volume, profit, and agent payout for a month.
Path Parameters
- Type: integeryearmin:2000max:2100required
Report year
- Type: integermonthmin:1max:12required
Report month
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/2025/1/summary \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"year": 2025,
"month": 1,
"payout_before_adjustments": "45000.00",
"total_adjustments": "500.00",
"total_withholds": "-1200.00",
"net_payout": "44300.00",
"merchant_count": 142,
"total_volume": "2500000.00",
"total_transactions": 18500,
"average_split_pct": 50,
"payout_variance_vs_prior_month": "2100.00",
"payout_variance_pct": 4.9
},
"meta": {
"request_id": "req_res02",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"report_run_id": "rpt_2025_01_a1b2c3d4e5f6",
"report_status": "final",
"data_cutoff_at": "2025-02-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get merchant residuals
Paginated merchant-level residual details with search, sort, and incremental sync support.
Path Parameters
- Type: integeryearmin:2000max:2100required
Report year
- Type: integermonthmin:1max:12required
Report month
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringsort
_by Sort field: volume, profit, agent_payout, dba_name
- Type: stringsort
_order Sort direction
- Type: stringsearchmax length:100
Search by merchant name or ID
- Type: stringFormat: date-timenullableupdated
_since ISO-8601 timestamp for incremental sync
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/2025/1/merchants?page=1&page_size=25&sort_by=agent_payout&sort_order=desc' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"dba_name": "Sunrise Coffee Co",
"volume": "85000.00",
"transaction_count": 620,
"revenue": "1200.00",
"expenses": "800.00",
"profit": "400.00",
"split_pct": 50,
"agent_payout": "200.00"
},
{
"merchant_id": "925700000198472",
"dba_name": "The Barber Lounge",
"volume": "42000.00",
"transaction_count": 310,
"revenue": "600.00",
"expenses": "350.00",
"profit": "250.00",
"split_pct": 50,
"agent_payout": "125.00"
}
],
"meta": {
"request_id": "req_res03",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"report_run_id": "rpt_2025_01_a1b2c3d4e5f6",
"report_status": "final",
"data_cutoff_at": "2025-02-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get adjustments
Returns adjustment line items for a residual report period.
Path Parameters
- Type: integeryearmin:2000max:2100required
Report year
- Type: integermonthmin:1max:12required
Report month
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/2025/1/adjustments \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"type": "Bonus",
"description": "Q4 performance bonus",
"amount": "500.00",
"merchant_id": null
},
{
"type": "Clawback",
"description": "Early termination",
"amount": "-200.00",
"merchant_id": "925700000198472"
}
],
"meta": {
"request_id": "req_res04",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"report_run_id": "rpt_2025_01_a1b2c3d4e5f6",
"report_status": "final",
"data_cutoff_at": "2025-02-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get withholds
Returns withhold line items for a residual report period.
Path Parameters
- Type: integeryearmin:2000max:2100required
Report year
- Type: integermonthmin:1max:12required
Report month
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/2025/1/withholds \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"type": "Reserve",
"description": "Rolling reserve hold",
"amount": "-250.00",
"merchant_id": "925700000233734",
"merchant_name": "Sunrise Coffee Co"
},
{
"type": "Chargeback",
"description": "Chargeback recovery withhold",
"amount": "-150.00",
"merchant_id": "925700000198472",
"merchant_name": "The Barber Lounge"
}
],
"meta": {
"request_id": "req_res05",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"report_run_id": "rpt_2025_01_a1b2c3d4e5f6",
"report_status": "final",
"data_cutoff_at": "2025-02-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get payout trend
Returns month-over-month payout trend data for the last N months.
Query Parameters
- Type: integermonthsmin:1max:24
Number of months to include in trend
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/trend?months=3' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"year": 2024,
"month": 11,
"net_payout": "40500.00",
"volume": "2200000.00",
"merchant_count": 138
},
{
"year": 2024,
"month": 12,
"net_payout": "42200.00",
"volume": "2350000.00",
"merchant_count": 140
},
{
"year": 2025,
"month": 1,
"net_payout": "44300.00",
"volume": "2500000.00",
"merchant_count": 142
}
],
"meta": {
"request_id": "req_res06",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Get top merchants
Returns the top merchants ranked by profit for a residual report period.
Path Parameters
- Type: integeryearmin:2000max:2100required
Report year
- Type: integermonthmin:1max:12required
Report month
Query Parameters
- Type: integerlimitmin:1max:50
Number of top merchants to return
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/2025/1/top-merchants?limit=3' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"dba_name": "Sunrise Coffee Co",
"profit": "1200.00",
"volume": "180000.00",
"agent_payout": "600.00"
},
{
"merchant_id": "925700000198472",
"dba_name": "The Barber Lounge",
"profit": "950.00",
"volume": "120000.00",
"agent_payout": "475.00"
},
{
"merchant_id": "925700000345678",
"dba_name": "Metro Auto Wash",
"profit": "800.00",
"volume": "95000.00",
"agent_payout": "400.00"
}
],
"meta": {
"request_id": "req_res07",
"api_version": "v1",
"source": "bigquery",
"as_of": "2025-01-15T10:30:00+00:00",
"report_run_id": "rpt_2025_01_a1b2c3d4e5f6",
"report_status": "final",
"data_cutoff_at": "2025-02-05T00:00:00+00:00",
"generated_at": "2025-01-15T10:30:00+00:00"
},
"errors": []
}Successful Response
Create merchant export
Starts an async CSV export of merchant residuals. Returns 202 with an export ID to poll.
Path Parameters
- Type: integeryearmin:2000max:2100required
Report year
- Type: integermonthmin:1max:12required
Report month
Headers
- Type: stringIdempotency
- Key Optional dedup key (24h TTL)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/reports/2025/1/merchants/export \
--request POST \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"export_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "succeeded"
},
"meta": {
"request_id": "req_exp01",
"api_version": "v1"
},
"errors": []
}Successful Response
Get export status
Check the status of an async export job (pending, running, succeeded, failed).
Path Parameters
- Type: stringexport
_id min length:1max length:100requiredExport job ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/exports/550e8400-e29b-41d4-a716-446655440000 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"export_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "succeeded",
"row_count": 142,
"created_at": "2025-01-15T10:35:00+00:00"
},
"meta": {
"request_id": "req_exp02",
"api_version": "v1"
},
"errors": []
}Successful Response
Download export
Returns a signed GCS URL for downloading a completed export CSV.
Path Parameters
- Type: stringexport
_id min length:1max length:100requiredExport job ID
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/exports/550e8400-e29b-41d4-a716-446655440000/download \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"download_url": "https://storage.googleapis.com/example-exports/residuals/..."
},
"meta": {
"request_id": "req_exp03",
"api_version": "v1"
},
"errors": []
}Successful Response
AI portfolio insights
Explains one paid month of your organization's residuals: a headline, a summary, prioritized insights and opportunities, each citing the statement figures behind it. Briefs for the latest paid month are prepared in advance and return in seconds; other months are generated on request and can take up to a few minutes. Rate limited to 5 requests per minute per key.
Body·PortfolioInsightsRequest
Residual paid month to explain.
- Type: integermonthmin:1max:12required
Paid month, 1-12.
- Type: integeryearmin:2000max:2100required
Paid year.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/residuals/explain \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"year": 2026,
"month": 8
}'
{
"data": {
"analysis_version": "residuals-explain-v2",
"audience": "external",
"reader_lens": "portfolio_executive",
"period": {
"start_month": "2026-08",
"end_month": "2026-08",
"months": [
"2026-08"
]
},
"comparison_period": {
"start_month": "2026-07",
"end_month": "2026-07",
"months": [
"2026-07"
]
},
"coverage": {
"current": {
"requested_months": [
"2026-08"
],
"available_months": [
"2026-08"
],
"missing_months": [],
"complete": true
},
"comparison": {
"requested_months": [
"2026-07"
],
"available_months": [
"2026-07"
],
"missing_months": [],
"complete": true
},
"comparable": true
},
"data_through": "2026-08",
"generated_at": "2026-09-13T08:55:02+00:00",
"from_cache": true,
"regeneration": "cached",
"prompt_version": "v2",
"headline": "Net payout fell $2,308.45 as processing volume declined",
"summary": "Net payout moved from $48,210.55 in July to $45,902.10 in August (-4.8%). Processing volume fell 2.9% while payout yield held near 76 bps, so most of the decline follows volume.",
"key_insights": [
{
"category": "performance",
"title": "Lower volume drove the payout decline",
"description": "Net payout fell $2,308.45 from July to August. Volume fell 2.9% while payout yield held near 76 bps.",
"impact": "-$2,308.45 (2026-08)",
"priority": "high",
"direction": "negative",
"observation": "Net payout fell $2,308.45 from July to August.",
"explanation": "Volume fell 2.9% while payout yield held near 76 bps.",
"cause_status": "supported",
"evidence_ids": [
"metric:net_payout",
"metric:volume",
"bridge:net_payout"
],
"next_step": "Review the merchants whose volume fell most in August.",
"owner": "portfolio_owner",
"missing_evidence": [],
"quantified_impact": {
"metric_evidence_id": "metric:net_payout",
"amount": -2308.45,
"unit": "USD",
"period": "2026-08"
}
},
{
"category": "risk",
"title": "Northside Grill stopped reporting",
"description": "Northside Grill paid $1,140.20 in July and has no August statement line. The data does not show why.",
"impact": "-$1,140.20 (2026-08)",
"priority": "medium",
"direction": "negative",
"observation": "Northside Grill paid $1,140.20 in July and has no August statement line.",
"explanation": "The data does not show why.",
"cause_status": "unverified",
"evidence_ids": [
"merchant:4445091234567"
],
"next_step": "Ask merchant support whether the account closed or moved processors.",
"owner": "merchant_support",
"missing_evidence": [
"August account status for merchant 4445091234567"
],
"quantified_impact": {
"metric_evidence_id": "merchant:4445091234567",
"amount": -1140.2,
"unit": "USD",
"period": "2026-08"
}
}
],
"opportunities": [
{
"title": "Recover lapsed volume",
"description": "Confirm whether Northside Grill can resume processing.",
"evidence_ids": [
"merchant:4445091234567"
],
"owner": "portfolio_owner",
"amount": null,
"amount_evidence_id": null,
"dependencies": [
"Account status for merchant 4445091234567"
]
}
],
"unexplained_change": [],
"data_limitations": [
"Evidence contains source adjustment and hold labels only; it has no transaction-level refund, chargeback, pricing or contract records."
],
"evidence": [
{
"id": "metric:net_payout",
"kind": "metric",
"label": "Net payout (authoritative, after adjustments and holds)",
"link": null
},
{
"id": "metric:volume",
"kind": "metric",
"label": "Processing volume",
"link": null
},
{
"id": "bridge:net_payout",
"kind": "bridge",
"label": "bridge:net_payout",
"link": null
},
{
"id": "merchant:4445091234567",
"kind": "merchant",
"label": "Northside Grill",
"link": {
"kind": "merchant",
"label": "Northside Grill",
"merchant_number": "4445091234567",
"month": "2026-07",
"agent_id": null
}
}
],
"metrics": [
{
"id": "metric:net_payout",
"label": "Net payout (authoritative, after adjustments and holds)",
"unit": "USD",
"current": 45902.1,
"comparison": 48210.55,
"change": -2308.45,
"change_percent": -4.8
},
{
"id": "metric:volume",
"label": "Processing volume",
"unit": "USD",
"current": 6120400,
"comparison": 6305900,
"change": -185500,
"change_percent": -2.9
},
{
"id": "metric:payout_yield_bps",
"label": "Payout yield on volume",
"unit": "bps",
"current": 75.7,
"comparison": 76.6,
"change": -0.9,
"change_percent": -1.2
},
{
"id": "metric:reporting_merchants",
"label": "Reporting merchants",
"unit": "count",
"current": 412,
"comparison": 418,
"change": -6,
"change_percent": -1.4
}
],
"payout_bridge": {
"id": "bridge:net_payout",
"identity": "net payout change = payout change + adjustments change - holds change + unexplained",
"comparison_net_payout": 48210.55,
"current_net_payout": 45902.1,
"change": -2308.45,
"lines": [
{
"id": "bridge:payout_before_adjustments",
"label": "Change in payout before adjustments",
"amount": -1950
},
{
"id": "bridge:adjustments",
"label": "Change in adjustments",
"amount": -250
},
{
"id": "bridge:holds",
"label": "Change in holds (an increase reduces net payout)",
"amount": -108.45
}
],
"unexplained_remainder": {
"id": "bridge:unexplained",
"amount": 0
}
},
"agent_context": {
"agent_id": "5f2c1a9e-8b7d-4c3e-9a1f-2d6e4b8c0f13",
"agent_name": "Example Partners LLC",
"processing_month": "2026-08",
"merchant_count": 412,
"total_payout": 45902.1,
"avg_split_percent": 62.5,
"top_merchants": [
{
"name": "Harbor Auto Care",
"payout": 2410.35,
"volume": 188420.1
},
{
"name": "Lakeview Dental",
"payout": 1985.6,
"volume": 142300
}
],
"opportunity_analysis": null
},
"model_used": "vertex/gemini-3.8-flash",
"persona": "external",
"disclaimer": "This analysis is generated by AI and is provided for informational purposes only. It does not constitute financial, legal, or business advice. Insights may contain inaccuracies or incomplete information. Verify all data independently before making business decisions."
},
"meta": {
"request_id": "req_ins01",
"api_version": "v1"
},
"errors": []
}The portfolio brief
Capital
Merchant capital program: portfolio summary, outstanding advances, per-merchant activity, and open offers.
Get capital summary
Org-wide funding summary: advance counts and volume, merchant fees, loans (separate), and funnel counts.
Responses
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/capital/summary \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"advances": {
"count": 14,
"principal_total": 14000,
"fee_total": 1235,
"total": 15235,
"average": 1088.2142857143,
"first_signing_date": "2026-05-02",
"last_signing_date": "2026-07-19"
},
"loans": {
"count": 1,
"total": 12000
},
"merchants": {
"funded_count": 4,
"with_open_offer_count": 4
},
"funnel": {
"pre_offer": 3,
"offer": 1,
"taken": 1
}
},
"meta": {
"request_id": "req_capital_summary",
"api_version": "v1",
"source": "bigquery",
"as_of": "2026-08-20T08:00:00Z"
},
"errors": []
}Successful Response
List advances
Paginated instant-payout advances for the partner's merchants, sorted by signing date descending.
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringmerchant
_id max length:100nullableFilter by merchant
- Type: stringFormat: datenullablefrom
Earliest signing date (inclusive)
- Type: stringFormat: datenullableto
Latest signing date (inclusive)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/capital/advances?page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"advance_id": "adv_002",
"merchant_id": "925700000233734",
"merchant_name": "Sunrise Coffee Co",
"signing_date": "2026-07-19",
"principal_amount": 2000,
"fee_amount": 170,
"total_amount": 2170,
"status": null
},
{
"advance_id": "adv_001",
"merchant_id": "925700000233734",
"merchant_name": "Sunrise Coffee Co",
"signing_date": "2026-05-02",
"principal_amount": 1000,
"fee_amount": 85,
"total_amount": 1085,
"status": null
}
],
"meta": {
"request_id": "req_capital_advances",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2026-08-20T08:00:00Z"
},
"errors": []
}Successful Response
List merchant capital activity
Per-merchant funding rollups: advance counts, totals, and funnel stage.
Responses
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/capital/merchants \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "925700000233734",
"merchant_name": "Sunrise Coffee Co",
"funnel_stage": "taken",
"advances": {
"count": 2,
"total": 3255,
"last_signing_date": "2026-07-19"
},
"open_offers": []
},
{
"merchant_id": "925700000256909",
"merchant_name": "Harbor Market",
"funnel_stage": "offer",
"advances": {
"count": 0,
"total": 0,
"last_signing_date": null
},
"open_offers": [
{
"offer_id": "offer_001",
"offer_type": "offer",
"merchant_id": "925700000256909",
"merchant_name": "Harbor Market",
"status": null,
"amount_min": 10000,
"amount_max": 15000,
"term_months": 9,
"as_of_run": "2026-08-20T07:30:00Z"
}
]
}
],
"meta": {
"request_id": "req_capital_merchants",
"api_version": "v1",
"page": 1,
"page_size": 2,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2026-08-20T08:00:00Z"
},
"errors": []
}Successful Response
List offers
Offers and pre-offers for the partner's merchants with status and offered amounts/terms.
Query Parameters
- Type: stringmerchant
_id max length:100nullableFilter by merchant
- Type: stringnullableoffer
_type Filter by type: pre_offer or offer
- Type: stringstatusmax length:50nullable
Filter by offer status
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/capital/offers \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"offer_id": "offer_001",
"offer_type": "offer",
"merchant_id": "925700000256909",
"merchant_name": "Harbor Market",
"status": null,
"amount_min": 10000,
"amount_max": 15000,
"term_months": 9,
"as_of_run": "2026-08-20T07:30:00Z"
},
{
"offer_id": "preoffer_001",
"offer_type": "pre_offer",
"merchant_id": "925700000268111",
"merchant_name": "Orchard Books",
"status": null,
"amount_min": 5000,
"amount_max": 8000,
"term_months": null,
"as_of_run": "2026-08-20T07:30:00Z"
}
],
"meta": {
"request_id": "req_capital_offers",
"api_version": "v1",
"page": 1,
"page_size": 2,
"total_count": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2026-08-20T08:00:00Z"
},
"errors": []
}Successful Response
Authorizations
Authorization records from the processor: portfolio and per-merchant listings with daily approval summaries.
List authorizations across portfolio
Card authorization attempts (approvals and declines) across the partner's portfolio, newest first. Defaults to the last 30 days; maximum date span is 90 days (the per-merchant route allows 365). Portfolio results cover the TSYS side of the book only (meta.data_coverage is "tsys_only"); a merchant_id filter naming a Fiserv merchant returns an empty page. Fiserv merchants are served on the per-merchant routes. TSYS history begins 2024-12-30; new authorizations land once daily, typically one day behind. Paging depth: across more than one day, pages reach the first 500,000 rows (page x page_size), or the first 50,000 with approved, card_type or card_network; deeper pages return 422. A single day (date_from equal to date_to) has no depth limit, so sync large portfolios one day at a time.
Query Parameters
- Type: stringFormat: datenullabledate
_from Start date (YYYY-MM-DD)
- Type: stringFormat: datenullabledate
_to End date (YYYY-MM-DD)
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringmerchant
_id max length:50nullableFilter to one merchant in the portfolio
- Type: stringcard
_type max length:2nullableFilter by the raw processor card type code, passed through undecoded: the TSYS card type (e.g. 4, 5, 3, 8; proprietary extensions appear in live data) or, on the per-merchant routes, the Fiserv code: the Omaha FSP network code (e.g. 2 = Visa, 3 = Mastercard, 1 = American Express, 4 = Discover) or the AccessOne card type (e.g. 00002, 04).
- Type: stringnullablecard
_network Filter by one normalized network: amex, debit, diners, discover, ebt, fleet, jcb, mastercard, other, paypal, private_label, visa
- Type: booleannullableapproved
true = issuer-approved authorizations (TSYS response codes 00, 10, 85; Fiserv approval status 1 or AccessOne Approved); false = declines. Rows whose outcome is absent at the source (approved: null in the payload) match neither filter.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/authorizations?page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "672800000253062",
"authorization_id": "auth_8a19098404dece73b7615c06b33eec6d",
"occurred_at": "2026-08-19T11:57:28+00:00",
"occurred_at_basis": "utc",
"authorized_at": "2026-08-19T11:57:28+00:00",
"authorized_at_local": null,
"transaction_date": "2026-08-19",
"processor": "tsys",
"transaction_type": "authorization_request",
"message_type": "0100",
"card_type": "4",
"card_brand": "Visa",
"card_network": "visa",
"card_bin": "411111",
"card_last4": "1111",
"approval_code": "123456",
"response_code": "00",
"approved": true,
"amount": "3.78",
"currency": "840",
"cardholder_billing_amount": null,
"cardholder_billing_currency": null
}
],
"meta": {
"request_id": "req_auth01",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "alloydb",
"as_of": "2026-08-20T12:00:00+00:00",
"data_coverage": "tsys_only",
"applied_window": {
"from": "2026-07-21",
"to": "2026-08-20"
}
},
"errors": []
}Successful Response
List authorizations for a merchant
Card authorization attempts (approvals and declines) for one merchant, newest first. Defaults to the last 30 days; maximum date span is 365 days. An empty result is normal for low-volume merchants. Coverage: TSYS merchants are served from the TSYS authorization file (history from 2024-12-30; new authorizations land once daily, typically one day behind). Merchants processed on Fiserv Omaha FSP are served from the Fiserv authorization feed (history from 2026-01-01 with a rolling 15-month floor; refreshed roughly hourly). Merchants on Fiserv North or Fiserv Omaha Retail are served from the Fiserv AccessOne authorization feed (refreshed daily; times are the processor's wall-clock time in authorized_at_local, with authorized_at null). meta.data_coverage reports which feed answered ("tsys_only", "fiserv_fsp" or "fiserv_accessone"; new values are added as feeds come online). Paging depth: across more than one day, pages reach the first 500,000 rows (page x page_size), or the first 50,000 with approved, card_type or card_network; deeper pages return 422. A single day (date_from equal to date_to) has no depth limit, so sync large portfolios one day at a time.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: stringFormat: datenullabledate
_from Start date (YYYY-MM-DD)
- Type: stringFormat: datenullabledate
_to End date (YYYY-MM-DD)
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringcard
_type max length:5nullableFilter by the raw processor card type code, passed through undecoded: the TSYS card type (e.g. 4, 5, 3, 8; proprietary extensions appear in live data) or, on the per-merchant routes, the Fiserv code: the Omaha FSP network code (e.g. 2 = Visa, 3 = Mastercard, 1 = American Express, 4 = Discover) or the AccessOne card type (e.g. 00002, 04).
- Type: stringnullablecard
_network Filter by one normalized network: amex, debit, diners, discover, ebt, fleet, jcb, mastercard, other, paypal, private_label, visa
- Type: booleannullableapproved
true = issuer-approved authorizations (TSYS response codes 00, 10, 85; Fiserv approval status 1 or AccessOne Approved); false = declines. Rows whose outcome is absent at the source (approved: null in the payload) match neither filter.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/672800000253062/authorizations?page=1&page_size=25' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"merchant_id": "672800000253062",
"authorization_id": "auth_e32e3aacee3041b6b3f7e051f4d1b426",
"occurred_at": "2026-08-19T11:51:06+00:00",
"occurred_at_basis": "utc",
"authorized_at": "2026-08-19T11:51:06+00:00",
"authorized_at_local": null,
"transaction_date": "2026-08-19",
"processor": "tsys",
"transaction_type": "authorization_request",
"message_type": "0100",
"card_type": "4",
"card_brand": "Visa",
"card_network": "visa",
"card_bin": "411111",
"card_last4": "1111",
"approval_code": null,
"response_code": "51",
"approved": false,
"amount": "8.32",
"currency": "840",
"cardholder_billing_amount": null,
"cardholder_billing_currency": null
}
],
"meta": {
"request_id": "req_auth02",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "alloydb",
"as_of": "2026-08-20T12:00:00+00:00",
"data_coverage": "tsys_only",
"applied_window": {
"from": "2026-07-21",
"to": "2026-08-20"
}
},
"errors": []
}Successful Response
Get daily authorization summary
Daily authorization counts, approval rate, and approved volume for one merchant. Defaults to the last 30 days; maximum date span is 365 days. A day's auth_count can exceed approved_count + declined_count: rows whose outcome is absent at the source count as authorizations but as neither approved nor declined. approval_rate counts issuer decisions only (TSYS 0100/0200; Fiserv purchases and pre-authorization requests) as approved / (approved + declined); approval_basis carries those counts. Coverage: TSYS merchants are served from the TSYS authorization file (history from 2024-12-30; new authorizations land once daily, typically one day behind). Merchants processed on Fiserv Omaha FSP are served from the Fiserv authorization feed (history from 2026-01-01 with a rolling 15-month floor; refreshed roughly hourly). Merchants on Fiserv North or Fiserv Omaha Retail are served from the Fiserv AccessOne authorization feed (refreshed daily; times are the processor's wall-clock time in authorized_at_local, with authorized_at null). meta.data_coverage reports which feed answered ("tsys_only", "fiserv_fsp" or "fiserv_accessone"; new values are added as feeds come online).
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: stringFormat: datenullabledate
_from Start date (YYYY-MM-DD)
- Type: stringFormat: datenullabledate
_to End date (YYYY-MM-DD)
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/merchants/672800000253062/authorizations/summary \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"merchant_id": "672800000253062",
"days": [
{
"date": "2026-08-19",
"auth_count": 73,
"approved_count": 72,
"declined_count": 1,
"approval_rate": 0.9863,
"approval_basis": {
"attempts": 73,
"approved": 72,
"declined": 1,
"unknown": 0
},
"approved_amount": "714.60"
}
],
"totals": {
"auth_count": 2709,
"approved_count": 2521,
"declined_count": 188,
"approval_rate": 0.9306,
"approval_basis": {
"attempts": 2709,
"approved": 2521,
"declined": 188,
"unknown": 0
},
"approved_amount": "27439.43"
}
},
"meta": {
"request_id": "req_auth03",
"api_version": "v1",
"source": "alloydb",
"as_of": "2026-08-20T12:00:00+00:00",
"data_coverage": "tsys_only",
"applied_window": {
"from": "2026-07-21",
"to": "2026-08-20"
}
},
"errors": []
}Successful Response
Chargebacks
Chargeback cases: portfolio and per-merchant listings with summary counts.
List chargebacks
Chargeback and retrieval cases across the partner's portfolio. Two defaults apply together: status=all (every case, not just open ones) and updated_since=30 days ago (only cases with activity in that window). Pass an explicit updated_since, or from/to, to widen the window; pass status=open or status=closed to narrow by status. Note: status=open combined with the default updated_since window shows only cases that both are open AND changed recently — pass a wide explicit from to see the full open book.
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringstatus
open, closed, or all
- Type: stringmerchant
_id max length:50nullableFilter to one merchant
- Type: stringFormat: datenullablefrom
Filter on when a case opened (inclusive). This is not a change feed: a case opened before
frombut resolved inside the window will not appear. Useupdated_sinceto sync a mirror. - Type: stringFormat: datenullableto
Filter on when a case opened (inclusive). Same caveat as
from— not a change feed. Useupdated_sinceto sync a mirror. - Type: stringFormat: datenullableupdated
_since Cases with any activity on or after this date. Defaults to 30 days ago on this endpoint. This is the incremental-sync filter: it catches newly-opened and newly-resolved cases. An explicit
fromortosuppresses the default.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/chargebacks?page=1&page_size=25&status=all' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"case_id": "2026163019064",
"merchant_id": "939802015758008",
"merchant_name": "PERFORMANCE GOLF ZONE",
"kind": "chargeback",
"status": "open",
"resolved_against": null,
"resolved_against_description": null,
"reason_code": "10.4",
"reason": "Fraud Card Absent Environment",
"amount": "125.40",
"card_brand": "Visa",
"transaction_reference": "24906421650000",
"opened_at": "2026-06-12",
"resolved_at": null,
"respond_by": "2026-07-08",
"source": "tsys"
}
],
"meta": {
"request_id": "req_cb01",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2026-08-04T12:00:00+00:00",
"applied_window": {
"updated_since": "2026-07-06",
"from": null,
"to": null
}
},
"errors": []
}Successful Response
Get chargeback summary
Org-wide case counts, open exposure, and the open split between chargebacks and retrieval requests.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://uat.modulate-api.es.flute.com/api/partner/chargebacks/summary \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"open_count": 6,
"closed_count": 10049,
"total_count": 10055,
"open_amount": "1530.43",
"open_chargeback_count": 6,
"open_retrieval_count": 0,
"merchants_with_open_cases": 1
},
"meta": {
"request_id": "req_cb02",
"api_version": "v1",
"source": "bigquery",
"as_of": "2026-08-04T12:00:00+00:00"
},
"errors": []
}Successful Response
List chargebacks for a merchant
Chargeback and retrieval cases for one merchant, most recently opened first. Defaults to all statuses. An empty result is normal — most merchants have no open cases.
Path Parameters
- Type: stringmerchant
_id min length:1max length:50requiredMerchant ID
Query Parameters
- Type: integerpagemin:1
Page number
- Type: integerpage
_size min:1max:100Items per page
- Type: stringstatus
open, closed, or all
- Type: stringFormat: datenullablefrom
Filter on when a case opened (inclusive). This is not a change feed: a case opened before
frombut resolved inside the window will not appear. Useupdated_sinceto sync a mirror. - Type: stringFormat: datenullableto
Filter on when a case opened (inclusive). Same caveat as
from— not a change feed. Useupdated_sinceto sync a mirror. - Type: stringFormat: datenullableupdated
_since Cases with any activity on or after this date. No default on this route — it is already a full-history drill-down for one merchant. Pass it to sync a per-merchant mirror without re-fetching everything.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://uat.modulate-api.es.flute.com/api/partner/merchants/939802015758008/chargebacks?page=1&page_size=25&status=all' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"case_id": "2026166022107",
"merchant_id": "939802015758008",
"merchant_name": "PERFORMANCE GOLF ZONE",
"kind": "retrieval",
"status": "closed",
"resolved_against": "merchant",
"resolved_against_description": "Resolved against merchant",
"reason_code": "6005",
"reason": "Transaction Documentation Request Due to Cardholde",
"amount": "0.00",
"card_brand": "Discover",
"transaction_reference": null,
"opened_at": "2026-06-15",
"resolved_at": "2026-07-01",
"respond_by": null,
"source": "tsys"
}
],
"meta": {
"request_id": "req_cb03",
"api_version": "v1",
"page": 1,
"page_size": 25,
"total_count": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"source": "bigquery",
"as_of": "2026-08-04T12:00:00+00:00",
"applied_window": {
"updated_since": null,
"from": null,
"to": null
}
},
"errors": []
}Successful Response