{
	"components": {
		"responses": {
			"MethodNotAllowed": {
				"content": {
					"application/problem+json": {
						"examples": {
							"method_not_allowed": {
								"value": {
									"detail": "The path exists but does not support this HTTP method.",
									"requestId": "29400000-0000-4000-8000-000000000001",
									"status": 405,
									"title": "The path exists but does not support this HTTP method.",
									"type": "https://docs.paypathiq.com/problems/method_not_allowed"
								}
							}
						},
						"schema": { "$ref": "#/components/schemas/Problem" }
					}
				},
				"description": "The path exists but does not support this HTTP method.",
				"headers": {
					"Cache-Control": {
						"description": "Integration-facing responses are never cached.",
						"schema": { "const": "no-store", "type": "string" }
					},
					"PayPathIQ-Api-Version": {
						"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
						"schema": { "const": "v1", "type": "string" }
					},
					"X-Request-Id": {
						"description": "PayPathIQ-generated support correlation identifier.",
						"schema": { "format": "uuid", "type": "string" }
					},
					"Allow": {
						"description": "HTTP methods this path supports.",
						"schema": { "type": "string" }
					}
				}
			},
			"RouteNotFound": {
				"content": {
					"application/problem+json": {
						"examples": {
							"route_not_found": {
								"value": {
									"detail": "No API route exists at this path.",
									"requestId": "29400000-0000-4000-8000-000000000001",
									"status": 404,
									"title": "No API route exists at this path.",
									"type": "https://docs.paypathiq.com/problems/route_not_found"
								}
							}
						},
						"schema": { "$ref": "#/components/schemas/Problem" }
					}
				},
				"description": "No API route exists at this path.",
				"headers": {
					"Cache-Control": {
						"description": "Integration-facing responses are never cached.",
						"schema": { "const": "no-store", "type": "string" }
					},
					"PayPathIQ-Api-Version": {
						"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
						"schema": { "const": "v1", "type": "string" }
					},
					"X-Request-Id": {
						"description": "PayPathIQ-generated support correlation identifier.",
						"schema": { "format": "uuid", "type": "string" }
					}
				}
			}
		},
		"schemas": {
			"BalanceBreakdown": {
				"type": "object",
				"properties": {
					"costs": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"fees": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"interest": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"principal": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					}
				},
				"required": ["costs", "fees", "interest", "principal"],
				"additionalProperties": false,
				"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
			},
			"BalanceSnapshot": {
				"type": "object",
				"properties": {
					"asOf": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
						"description": "UTC time at which the Source produced these balances. Never earlier than the previous accepted snapshot."
					},
					"balances": {
						"minItems": 1,
						"maxItems": 100,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"recoverableAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false,
									"description": "The Source's authoritative balance for this Receivable at asOf."
								},
								"sourceRevision": {
									"type": "integer",
									"exclusiveMinimum": 0,
									"maximum": 9007199254740991,
									"description": "The Receivable's Source revision this balance belongs to. Never lower than the accepted revision."
								}
							},
							"required": [
								"externalReceivableId",
								"recoverableAmount",
								"sourceRevision"
							],
							"additionalProperties": false
						},
						"description": "Incremental scope: Receivables omitted here are unaffected. Each Receivable appears at most once."
					},
					"sourcePosition": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991,
						"description": "Strictly increasing position of this snapshot in the Source's ordered feed, across the connection."
					}
				},
				"required": ["asOf", "balances", "sourcePosition"],
				"additionalProperties": false
			},
			"BalanceSnapshotResponse": {
				"type": "object",
				"properties": {
					"acceptedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"asOf": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"balances": {
						"maxItems": 100,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"recoverableAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false,
									"description": "The Source's authoritative balance for this Receivable at asOf."
								},
								"sourceRevision": {
									"type": "integer",
									"exclusiveMinimum": 0,
									"maximum": 9007199254740991,
									"description": "The Receivable's Source revision this balance belongs to. Never lower than the accepted revision."
								},
								"holdReason": {
									"type": "string",
									"enum": [
										"pending_payment_overlap_unknown",
										"source_balance_mismatch"
									]
								},
								"outcome": {
									"type": "string",
									"enum": ["applied", "checkpoint", "unchanged", "held"],
									"description": "applied: snapshot-only balance accepted. checkpoint: transaction-mode balance agrees with the ledger. unchanged: nothing differed. held: uncertainty recorded and affected actions held; holdReason says why."
								}
							},
							"required": [
								"externalReceivableId",
								"recoverableAmount",
								"sourceRevision",
								"outcome"
							],
							"additionalProperties": false
						}
					},
					"externalSnapshotId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"feedMode": {
						"type": "string",
						"enum": ["transaction", "snapshot_only"]
					},
					"sourcePosition": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					}
				},
				"required": [
					"acceptedAt",
					"asOf",
					"balances",
					"externalSnapshotId",
					"feedMode",
					"sourcePosition"
				],
				"additionalProperties": false
			},
			"BookCompletion": {
				"type": "object",
				"properties": {
					"asOf": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
						"description": "UTC time at which the Source produced this book. Never later than the earliest listed batch submission."
					},
					"batches": {
						"minItems": 1,
						"maxItems": 50,
						"type": "array",
						"items": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" },
						"description": "externalBatchIds that together carried every Receivable in the declared scope. Each must belong to this connection and have succeeded with every record accepted."
					},
					"expectedReceivableCount": {
						"type": "integer",
						"minimum": 0,
						"maximum": 9007199254740991,
						"description": "Exact number of distinct Receivables in the Source book. It must equal the distinct Receivables accepted by the listed batches, so a truncated load cannot be declared complete."
					},
					"scope": {
						"type": "string",
						"enum": ["all_receivables"],
						"description": "all_receivables: every Receivable of this connection's Source for this Client."
					},
					"sourcePosition": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991,
						"description": "Strictly increasing position of this declaration across the connection."
					}
				},
				"required": [
					"asOf",
					"batches",
					"expectedReceivableCount",
					"scope",
					"sourcePosition"
				],
				"additionalProperties": false
			},
			"CollectionSummary": {
				"type": "object",
				"properties": {
					"actions": {
						"maxItems": 10,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"channel": {
									"type": "string",
									"enum": ["call", "message", "other"]
								},
								"executedAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"origin": { "type": "string", "enum": ["manual", "automatic"] },
								"scheduledFor": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"status": {
									"type": "string",
									"enum": [
										"scheduled",
										"running",
										"completed",
										"failed",
										"cancelled"
									]
								}
							},
							"required": ["channel", "origin", "status"],
							"additionalProperties": false,
							"description": "A collection action's status. Message content, staff notes and provider responses are never included."
						},
						"description": "The most recent actions, newest first."
					},
					"commitments": {
						"maxItems": 5,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"amount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"arrangementTotal": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"dueAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"frequency": { "type": "string", "maxLength": 40 },
								"instalmentsPaid": {
									"type": "integer",
									"minimum": 0,
									"maximum": 9007199254740991
								},
								"kind": {
									"type": "string",
									"enum": ["promise_to_pay", "payment_plan"]
								},
								"nextInstalment": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"dueAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										}
									},
									"required": ["amount", "dueAt"],
									"additionalProperties": false
								},
								"status": {
									"type": "string",
									"enum": ["active", "completed", "broken", "cancelled"]
								},
								"totalInstalments": {
									"type": "integer",
									"minimum": 1,
									"maximum": 9007199254740991
								}
							},
							"required": [
								"amount",
								"dueAt",
								"instalmentsPaid",
								"kind",
								"status"
							],
							"additionalProperties": false,
							"description": "A promise to pay or Payment plan covering this Receivable. Read-only: commitments are never created or edited through this API, and notes are never included."
						}
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"financialPosition": {
						"type": "object",
						"properties": {
							"confirmedUnreconciledAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"sourceAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"receiptAcknowledgedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false,
								"description": "The part of confirmed Payments that Source receipt lines have been matched against for this Receivable. It reduces confirmedUnreconciledAmount without changing the working amount."
							},
							"receiptDifference": {
								"description": "Present while a receipt line for this Receivable did not fit its allocated Payment amount and is unresolved. Affected recovery and Payment actions are held; both figures are preserved until matching evidence or an authorized correction resolves it.",
								"type": "object",
								"properties": {
									"externalReconciliationId": {
										"type": "string",
										"pattern": "^[A-Za-z0-9_-]{1,128}$"
									},
									"since": {
										"type": "string",
										"format": "date-time",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
									}
								},
								"required": ["externalReconciliationId", "since"],
								"additionalProperties": false
							},
							"missingFromCompleteBook": {
								"description": "Present while a verified complete book omitted this Receivable and it has not been resolved. Affected recovery and Payment actions are held; balance, status and history are unchanged. Cleared by a later verified complete book that contains it, an authorized source close, or an authorized correction to a zero balance, and never resumes recovery by itself.",
								"type": "object",
								"properties": {
									"externalCompletionId": {
										"type": "string",
										"pattern": "^[A-Za-z0-9_-]{1,128}$"
									},
									"since": {
										"type": "string",
										"format": "date-time",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
									}
								},
								"required": ["externalCompletionId", "since"],
								"additionalProperties": false
							},
							"sourcePosition": {
								"description": "The latest ordered balance snapshot that covered this Receivable. Absent until one has.",
								"type": "object",
								"properties": {
									"asOf": {
										"type": "string",
										"format": "date-time",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
									},
									"position": {
										"type": "integer",
										"exclusiveMinimum": 0,
										"maximum": 9007199254740991
									}
								},
								"required": ["asOf", "position"],
								"additionalProperties": false
							},
							"uncertainty": {
								"description": "Present while the Source and working positions cannot be safely reconciled. Affected recovery and Payment actions are held. Both figures are preserved; only matching evidence or an authorized correction resolves it.",
								"type": "object",
								"properties": {
									"reason": {
										"type": "string",
										"enum": [
											"pending_payment_overlap_unknown",
											"source_balance_mismatch"
										]
									},
									"since": {
										"type": "string",
										"format": "date-time",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
									},
									"snapshotAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["reason", "since", "snapshotAmount"],
								"additionalProperties": false
							},
							"workingAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							}
						},
						"required": [
							"confirmedUnreconciledAmount",
							"sourceAmount",
							"receiptAcknowledgedAmount",
							"workingAmount"
						],
						"additionalProperties": false,
						"description": "Present on reads. sourceAmount is the declared accounting authority's position, workingAmount is the safe collection balance after confirmed allocated Payments, and confirmedUnreconciledAmount is the allocated confirmed amount the Source has not yet acknowledged. Unapplied funds appear in none of them."
					},
					"financialType": {
						"type": "string",
						"enum": [
							"loan_instalment",
							"accelerated_balance",
							"loan_balance",
							"service_charge_demand"
						]
					},
					"payment": {
						"type": "object",
						"properties": {
							"holds": {
								"type": "array",
								"items": {
									"type": "string",
									"enum": [
										"dispute",
										"source_restriction",
										"source_stale",
										"other_protection",
										"reconciliation_difference",
										"missing_from_complete_book",
										"source_uncertain"
									]
								},
								"description": "Closed categories of the holds currently preventing new Payment initiation."
							},
							"initiationHeld": { "type": "boolean" }
						},
						"required": ["holds", "initiationHeld"],
						"additionalProperties": false,
						"description": "Whether a new hosted Payment request would currently be refused. It is informational: payment creation checks every control again."
					},
					"reconciliation": {
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": [
									"reconciled",
									"pending_accounting",
									"difference_held",
									"source_uncertain",
									"missing_from_complete_book"
								],
								"description": "The most urgent accounting state for this Receivable. missing_from_complete_book, difference_held and source_uncertain each hold recovery and Payment actions; pending_accounting means confirmed Payments await Source acknowledgement; reconciled means none are outstanding."
							}
						},
						"required": ["status"],
						"additionalProperties": false,
						"description": "Reconciliation status. The supporting amounts are in financialPosition."
					},
					"recovery": {
						"type": "object",
						"properties": {
							"entryMode": {
								"type": "string",
								"enum": ["explicit_instruction", "approved_rules"]
							},
							"held": {
								"type": "boolean",
								"description": "True while any hold prevents recovery for the Receivable right now."
							},
							"holds": {
								"type": "array",
								"items": {
									"type": "string",
									"enum": [
										"recovery_not_authorized",
										"collection_not_enabled",
										"source_restriction",
										"dispute",
										"source_stale",
										"other_protection",
										"reconciliation_hold"
									]
								},
								"description": "Closed categories of the holds currently preventing recovery."
							},
							"state": {
								"type": "string",
								"enum": ["settled", "held", "eligible"],
								"description": "settled: nothing is owed. held: at least one hold applies. eligible: no hold applies now; every protection is checked again when an action is attempted."
							}
						},
						"required": ["entryMode", "held", "holds", "state"],
						"additionalProperties": false,
						"description": "Working recovery state. It is informational: reading it never starts, resumes or clears recovery."
					}
				},
				"required": [
					"actions",
					"commitments",
					"externalReceivableId",
					"financialPosition",
					"financialType",
					"payment",
					"reconciliation",
					"recovery"
				],
				"additionalProperties": false,
				"description": "The working collection position of one Receivable, separate from its Source representation. Requires collection_summaries:read."
			},
			"CollectionSummaryListResponse": {
				"type": "object",
				"properties": {
					"data": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"actions": {
									"maxItems": 10,
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"channel": {
												"type": "string",
												"enum": ["call", "message", "other"]
											},
											"executedAt": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"origin": {
												"type": "string",
												"enum": ["manual", "automatic"]
											},
											"scheduledFor": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"status": {
												"type": "string",
												"enum": [
													"scheduled",
													"running",
													"completed",
													"failed",
													"cancelled"
												]
											}
										},
										"required": ["channel", "origin", "status"],
										"additionalProperties": false,
										"description": "A collection action's status. Message content, staff notes and provider responses are never included."
									},
									"description": "The most recent actions, newest first."
								},
								"commitments": {
									"maxItems": 5,
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"arrangementTotal": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"dueAt": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"frequency": { "type": "string", "maxLength": 40 },
											"instalmentsPaid": {
												"type": "integer",
												"minimum": 0,
												"maximum": 9007199254740991
											},
											"kind": {
												"type": "string",
												"enum": ["promise_to_pay", "payment_plan"]
											},
											"nextInstalment": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "object",
														"properties": {
															"amount": {
																"type": "string",
																"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
															},
															"currency": { "type": "string", "const": "EUR" }
														},
														"required": ["amount", "currency"],
														"additionalProperties": false
													},
													"dueAt": {
														"type": "string",
														"format": "date-time",
														"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
													}
												},
												"required": ["amount", "dueAt"],
												"additionalProperties": false
											},
											"status": {
												"type": "string",
												"enum": ["active", "completed", "broken", "cancelled"]
											},
											"totalInstalments": {
												"type": "integer",
												"minimum": 1,
												"maximum": 9007199254740991
											}
										},
										"required": [
											"amount",
											"dueAt",
											"instalmentsPaid",
											"kind",
											"status"
										],
										"additionalProperties": false,
										"description": "A promise to pay or Payment plan covering this Receivable. Read-only: commitments are never created or edited through this API, and notes are never included."
									}
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"financialPosition": {
									"type": "object",
									"properties": {
										"confirmedUnreconciledAmount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"sourceAmount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"receiptAcknowledgedAmount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false,
											"description": "The part of confirmed Payments that Source receipt lines have been matched against for this Receivable. It reduces confirmedUnreconciledAmount without changing the working amount."
										},
										"receiptDifference": {
											"description": "Present while a receipt line for this Receivable did not fit its allocated Payment amount and is unresolved. Affected recovery and Payment actions are held; both figures are preserved until matching evidence or an authorized correction resolves it.",
											"type": "object",
											"properties": {
												"externalReconciliationId": {
													"type": "string",
													"pattern": "^[A-Za-z0-9_-]{1,128}$"
												},
												"since": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												}
											},
											"required": ["externalReconciliationId", "since"],
											"additionalProperties": false
										},
										"missingFromCompleteBook": {
											"description": "Present while a verified complete book omitted this Receivable and it has not been resolved. Affected recovery and Payment actions are held; balance, status and history are unchanged. Cleared by a later verified complete book that contains it, an authorized source close, or an authorized correction to a zero balance, and never resumes recovery by itself.",
											"type": "object",
											"properties": {
												"externalCompletionId": {
													"type": "string",
													"pattern": "^[A-Za-z0-9_-]{1,128}$"
												},
												"since": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												}
											},
											"required": ["externalCompletionId", "since"],
											"additionalProperties": false
										},
										"sourcePosition": {
											"description": "The latest ordered balance snapshot that covered this Receivable. Absent until one has.",
											"type": "object",
											"properties": {
												"asOf": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"position": {
													"type": "integer",
													"exclusiveMinimum": 0,
													"maximum": 9007199254740991
												}
											},
											"required": ["asOf", "position"],
											"additionalProperties": false
										},
										"uncertainty": {
											"description": "Present while the Source and working positions cannot be safely reconciled. Affected recovery and Payment actions are held. Both figures are preserved; only matching evidence or an authorized correction resolves it.",
											"type": "object",
											"properties": {
												"reason": {
													"type": "string",
													"enum": [
														"pending_payment_overlap_unknown",
														"source_balance_mismatch"
													]
												},
												"since": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"snapshotAmount": {
													"type": "object",
													"properties": {
														"amount": {
															"type": "string",
															"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
														},
														"currency": { "type": "string", "const": "EUR" }
													},
													"required": ["amount", "currency"],
													"additionalProperties": false
												}
											},
											"required": ["reason", "since", "snapshotAmount"],
											"additionalProperties": false
										},
										"workingAmount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										}
									},
									"required": [
										"confirmedUnreconciledAmount",
										"sourceAmount",
										"receiptAcknowledgedAmount",
										"workingAmount"
									],
									"additionalProperties": false,
									"description": "Present on reads. sourceAmount is the declared accounting authority's position, workingAmount is the safe collection balance after confirmed allocated Payments, and confirmedUnreconciledAmount is the allocated confirmed amount the Source has not yet acknowledged. Unapplied funds appear in none of them."
								},
								"financialType": {
									"type": "string",
									"enum": [
										"loan_instalment",
										"accelerated_balance",
										"loan_balance",
										"service_charge_demand"
									]
								},
								"payment": {
									"type": "object",
									"properties": {
										"holds": {
											"type": "array",
											"items": {
												"type": "string",
												"enum": [
													"dispute",
													"source_restriction",
													"source_stale",
													"other_protection",
													"reconciliation_difference",
													"missing_from_complete_book",
													"source_uncertain"
												]
											},
											"description": "Closed categories of the holds currently preventing new Payment initiation."
										},
										"initiationHeld": { "type": "boolean" }
									},
									"required": ["holds", "initiationHeld"],
									"additionalProperties": false,
									"description": "Whether a new hosted Payment request would currently be refused. It is informational: payment creation checks every control again."
								},
								"reconciliation": {
									"type": "object",
									"properties": {
										"status": {
											"type": "string",
											"enum": [
												"reconciled",
												"pending_accounting",
												"difference_held",
												"source_uncertain",
												"missing_from_complete_book"
											],
											"description": "The most urgent accounting state for this Receivable. missing_from_complete_book, difference_held and source_uncertain each hold recovery and Payment actions; pending_accounting means confirmed Payments await Source acknowledgement; reconciled means none are outstanding."
										}
									},
									"required": ["status"],
									"additionalProperties": false,
									"description": "Reconciliation status. The supporting amounts are in financialPosition."
								},
								"recovery": {
									"type": "object",
									"properties": {
										"entryMode": {
											"type": "string",
											"enum": ["explicit_instruction", "approved_rules"]
										},
										"held": {
											"type": "boolean",
											"description": "True while any hold prevents recovery for the Receivable right now."
										},
										"holds": {
											"type": "array",
											"items": {
												"type": "string",
												"enum": [
													"recovery_not_authorized",
													"collection_not_enabled",
													"source_restriction",
													"dispute",
													"source_stale",
													"other_protection",
													"reconciliation_hold"
												]
											},
											"description": "Closed categories of the holds currently preventing recovery."
										},
										"state": {
											"type": "string",
											"enum": ["settled", "held", "eligible"],
											"description": "settled: nothing is owed. held: at least one hold applies. eligible: no hold applies now; every protection is checked again when an action is attempted."
										}
									},
									"required": ["entryMode", "held", "holds", "state"],
									"additionalProperties": false,
									"description": "Working recovery state. It is informational: reading it never starts, resumes or clears recovery."
								}
							},
							"required": [
								"actions",
								"commitments",
								"externalReceivableId",
								"financialPosition",
								"financialType",
								"payment",
								"reconciliation",
								"recovery"
							],
							"additionalProperties": false,
							"description": "The working collection position of one Receivable, separate from its Source representation. Requires collection_summaries:read."
						}
					},
					"hasMore": { "type": "boolean" },
					"nextCursor": {
						"description": "Send as cursor to read the next page. Null when there are no further summaries.",
						"type": ["string", "null"]
					}
				},
				"required": ["data", "hasMore", "nextCursor"],
				"additionalProperties": false,
				"description": "Summaries ordered by externalReceivableId, for the Receivables this connection may see."
			},
			"BookCompletionResponse": {
				"type": "object",
				"properties": {
					"acceptedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"asOf": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"batches": {
						"maxItems": 50,
						"type": "array",
						"items": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					"coveredReceivableCount": {
						"type": "integer",
						"minimum": -9007199254740991,
						"maximum": 9007199254740991
					},
					"externalCompletionId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"omissions": {
						"maxItems": 100,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"flaggedAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"resolution": {
									"description": "How a resolved flag was cleared: a later verified complete book containing the Receivable, an authorized source close, or an authorized non-cash correction to a zero balance. Only the missing-record restriction is cleared and recovery never resumes automatically.",
									"type": "string",
									"enum": ["complete_book", "source_close", "source_correction"]
								},
								"resolvedAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"state": {
									"type": "string",
									"enum": ["held", "resolved"],
									"description": "held: recovery and payment actions on the Receivable are held as missing from a verified complete book. resolved: a later verified complete book contained it and only this restriction was cleared."
								}
							},
							"required": ["externalReceivableId", "flaggedAt", "state"],
							"additionalProperties": false
						}
					},
					"omissionsTruncated": {
						"type": "boolean",
						"description": "True when more than 100 Receivables were flagged; omittedReceivableCount is the exact total."
					},
					"omittedReceivableCount": {
						"type": "integer",
						"minimum": -9007199254740991,
						"maximum": 9007199254740991
					},
					"scope": { "type": "string", "enum": ["all_receivables"] },
					"sourcePosition": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					}
				},
				"required": [
					"acceptedAt",
					"asOf",
					"batches",
					"coveredReceivableCount",
					"externalCompletionId",
					"omissions",
					"omissionsTruncated",
					"omittedReceivableCount",
					"scope",
					"sourcePosition"
				],
				"additionalProperties": false
			},
			"PaymentDeliveryAttempt": {
				"type": "object",
				"properties": {
					"channel": {
						"type": "string",
						"enum": ["api", "file_download"],
						"description": "api: your middleware sent the Payment to the accounting system through its API. file_download: you exported it as a file for the accounting system."
					},
					"outcome": {
						"type": "string",
						"enum": ["downloaded", "delivered", "failed"],
						"description": "downloaded: you retrieved or exported the Payment details. delivered: the accounting system's intake received them. failed: the delivery did not complete. None of these is accounting acceptance: only receipt lines acknowledged through a payment reconciliation are."
					}
				},
				"required": ["channel", "outcome"],
				"additionalProperties": false
			},
			"PaymentDeliveryListResponse": {
				"type": "object",
				"properties": {
					"data": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"accountingAcceptance": {
									"type": "string",
									"enum": [
										"pending",
										"partially_acknowledged",
										"acknowledged",
										"held"
									],
									"description": "pending: no receipt line has acknowledged this Payment. partially_acknowledged: some of the allocated amount is acknowledged. acknowledged: every allocated amount is acknowledged. held: a receipt line differs and affected actions are held. Derived only from payment reconciliations, never from delivery attempts or reads."
								},
								"allocations": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"allocatedAmount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"allocationReference": {
												"type": "string",
												"format": "uuid",
												"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
												"description": "A stable opaque reference to this allocation of the Payment."
											},
											"externalReceivableId": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											},
											"matchedAmount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"unmatchedAmount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											}
										},
										"required": [
											"allocatedAmount",
											"allocationReference",
											"externalReceivableId",
											"matchedAmount",
											"unmatchedAmount"
										],
										"additionalProperties": false
									}
								},
								"confirmedAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"delivery": {
									"type": "object",
									"properties": {
										"attempts": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"channel": {
														"type": "string",
														"enum": ["api", "file_download"]
													},
													"externalAttemptId": {
														"type": "string",
														"pattern": "^[A-Za-z0-9_-]{1,128}$"
													},
													"outcome": {
														"type": "string",
														"enum": ["downloaded", "delivered", "failed"]
													},
													"recordedAt": {
														"type": "string",
														"format": "date-time",
														"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
													}
												},
												"required": [
													"channel",
													"externalAttemptId",
													"outcome",
													"recordedAt"
												],
												"additionalProperties": false
											},
											"description": "Delivery attempts you reported, oldest first."
										},
										"state": {
											"type": "string",
											"enum": [
												"not_attempted",
												"downloaded",
												"delivered",
												"failed"
											],
											"description": "The outcome of the latest reported attempt, or not_attempted. Retrieving this resource never changes it."
										}
									},
									"required": ["attempts", "state"],
									"additionalProperties": false
								},
								"deliveryOwner": {
									"type": "string",
									"const": "partner",
									"description": "The agreed owner of receipt delivery for this connection. Only the owner may retrieve, deliver and acknowledge."
								},
								"externalPaymentRequestId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"paymentAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"paymentReference": {
									"type": "string",
									"format": "uuid",
									"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
									"description": "A stable opaque reference to the confirmed Payment."
								},
								"reconciliations": {
									"type": "array",
									"items": {
										"type": "string",
										"pattern": "^[A-Za-z0-9_-]{1,128}$"
									},
									"description": "Identifiers of the payment reconciliations that acknowledged this Payment."
								},
								"unappliedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"unmatchedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								}
							},
							"required": [
								"accountingAcceptance",
								"allocations",
								"confirmedAt",
								"delivery",
								"deliveryOwner",
								"externalPaymentRequestId",
								"paymentAmount",
								"paymentReference",
								"reconciliations",
								"unappliedAmount",
								"unmatchedAmount"
							],
							"additionalProperties": false
						}
					},
					"hasMore": { "type": "boolean" },
					"nextAfter": {
						"anyOf": [
							{ "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" },
							{ "type": "null" }
						],
						"description": "Pass as after to read the next page. Null on the last page."
					}
				},
				"required": ["data", "hasMore", "nextAfter"],
				"additionalProperties": false
			},
			"PaymentDeliveryResponse": {
				"type": "object",
				"properties": {
					"accountingAcceptance": {
						"type": "string",
						"enum": [
							"pending",
							"partially_acknowledged",
							"acknowledged",
							"held"
						],
						"description": "pending: no receipt line has acknowledged this Payment. partially_acknowledged: some of the allocated amount is acknowledged. acknowledged: every allocated amount is acknowledged. held: a receipt line differs and affected actions are held. Derived only from payment reconciliations, never from delivery attempts or reads."
					},
					"allocations": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"allocatedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"allocationReference": {
									"type": "string",
									"format": "uuid",
									"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
									"description": "A stable opaque reference to this allocation of the Payment."
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"matchedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"unmatchedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								}
							},
							"required": [
								"allocatedAmount",
								"allocationReference",
								"externalReceivableId",
								"matchedAmount",
								"unmatchedAmount"
							],
							"additionalProperties": false
						}
					},
					"confirmedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"delivery": {
						"type": "object",
						"properties": {
							"attempts": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"channel": {
											"type": "string",
											"enum": ["api", "file_download"]
										},
										"externalAttemptId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										},
										"outcome": {
											"type": "string",
											"enum": ["downloaded", "delivered", "failed"]
										},
										"recordedAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										}
									},
									"required": [
										"channel",
										"externalAttemptId",
										"outcome",
										"recordedAt"
									],
									"additionalProperties": false
								},
								"description": "Delivery attempts you reported, oldest first."
							},
							"state": {
								"type": "string",
								"enum": ["not_attempted", "downloaded", "delivered", "failed"],
								"description": "The outcome of the latest reported attempt, or not_attempted. Retrieving this resource never changes it."
							}
						},
						"required": ["attempts", "state"],
						"additionalProperties": false
					},
					"deliveryOwner": {
						"type": "string",
						"const": "partner",
						"description": "The agreed owner of receipt delivery for this connection. Only the owner may retrieve, deliver and acknowledge."
					},
					"externalPaymentRequestId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"paymentAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"paymentReference": {
						"type": "string",
						"format": "uuid",
						"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
						"description": "A stable opaque reference to the confirmed Payment."
					},
					"reconciliations": {
						"type": "array",
						"items": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" },
						"description": "Identifiers of the payment reconciliations that acknowledged this Payment."
					},
					"unappliedAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"unmatchedAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					}
				},
				"required": [
					"accountingAcceptance",
					"allocations",
					"confirmedAt",
					"delivery",
					"deliveryOwner",
					"externalPaymentRequestId",
					"paymentAmount",
					"paymentReference",
					"reconciliations",
					"unappliedAmount",
					"unmatchedAmount"
				],
				"additionalProperties": false
			},
			"PaymentReconciliation": {
				"type": "object",
				"properties": {
					"externalPaymentRequestId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$",
						"description": "The hosted Payment request whose confirmed Payment these receipt lines acknowledge. Matching uses this stable reference, the Client, the currency and the exact allocated amounts, never a similar amount or date."
					},
					"receiptLines": {
						"minItems": 1,
						"maxItems": 50,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"amount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false,
									"description": "The exact amount the Source posted against this Receivable for this receipt line."
								},
								"externalReceiptLineId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$",
									"description": "The Source's stable identity of this receipt line. It is unique across the connection and can never be reused for different evidence."
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								}
							},
							"required": [
								"amount",
								"externalReceiptLineId",
								"externalReceivableId"
							],
							"additionalProperties": false
						},
						"description": "One or more Source receipt lines. A Payment may be acknowledged progressively across several reconciliations."
					}
				},
				"required": ["externalPaymentRequestId", "receiptLines"],
				"additionalProperties": false
			},
			"PaymentReconciliationResolution": {
				"type": "object",
				"properties": {
					"basis": {
						"type": "string",
						"enum": ["matching_evidence", "authorized_correction"],
						"description": "matching_evidence: accepted only when matched receipt lines now account for the full allocated amount of every held Receivable. authorized_correction: the Client authorized a correction in the Source."
					},
					"reference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200,
						"description": "The Source's reference to the matching evidence or authorized correction."
					}
				},
				"required": ["basis", "reference"],
				"additionalProperties": false
			},
			"PaymentReconciliationResponse": {
				"type": "object",
				"properties": {
					"acceptedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"allocations": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"allocatedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"matchedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"unmatchedAmount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								}
							},
							"required": [
								"allocatedAmount",
								"externalReceivableId",
								"matchedAmount",
								"unmatchedAmount"
							],
							"additionalProperties": false
						},
						"description": "The Payment's allocations as of this read, across every reconciliation of the Payment. unmatchedAmount is the allocated amount no Source receipt line has acknowledged yet."
					},
					"externalPaymentRequestId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"externalReconciliationId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"lines": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"amount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false
								},
								"externalReceiptLineId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"state": {
									"type": "string",
									"enum": ["matched", "held", "explained"],
									"description": "matched: counted against the allocated amount. held: the line does not fit the allocated amount, so it is not counted and affected actions are held. explained: a held line cleared by matching evidence or an authorized correction; its amount is still preserved and never counted."
								}
							},
							"required": [
								"amount",
								"externalReceiptLineId",
								"externalReceivableId",
								"state"
							],
							"additionalProperties": false
						}
					},
					"paymentAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"resolution": {
						"type": "object",
						"properties": {
							"basis": {
								"type": "string",
								"enum": ["matching_evidence", "authorized_correction"]
							},
							"reference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"resolvedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							}
						},
						"required": ["basis", "reference", "resolvedAt"],
						"additionalProperties": false
					},
					"revision": {
						"type": "integer",
						"minimum": 1,
						"maximum": 9007199254740991,
						"description": "Increases each time the reconciliation's state changes. It matches the revision in change-feed events."
					},
					"status": {
						"type": "string",
						"enum": ["matched", "held", "resolved"],
						"description": "matched: every line fits the allocated amounts. held: at least one line differs and affected recovery and Payment actions are held. resolved: every difference was cleared by matching evidence or an authorized correction."
					},
					"unappliedAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false,
						"description": "Funds of the Payment that no allocation covers. They are never acknowledged by receipt lines."
					},
					"unmatchedAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false,
						"description": "The total allocated amount of the Payment that no Source receipt line has acknowledged yet."
					}
				},
				"required": [
					"acceptedAt",
					"allocations",
					"externalPaymentRequestId",
					"externalReconciliationId",
					"lines",
					"paymentAmount",
					"revision",
					"status",
					"unappliedAmount",
					"unmatchedAmount"
				],
				"additionalProperties": false
			},
			"Batch": {
				"type": "object",
				"properties": {
					"records": {
						"minItems": 1,
						"maxItems": 100,
						"type": "array",
						"items": {
							"oneOf": [
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": { "type": "string", "const": "customer" },
										"body": {
											"anyOf": [
												{
													"type": "object",
													"properties": {
														"name": {
															"type": "object",
															"properties": {
																"firstName": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 120
																},
																"lastName": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 120
																},
																"middleNames": {
																	"maxItems": 3,
																	"type": "array",
																	"items": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 120
																	}
																}
															},
															"required": ["firstName", "lastName"],
															"additionalProperties": false
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "person" },
														"contacts": {
															"maxItems": 8,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"address": {
																		"type": "object",
																		"properties": {
																			"countryCode": {
																				"type": "string",
																				"pattern": "^[A-Z]{2}$"
																			},
																			"line1": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"line2": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"locality": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"postalCode": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 20
																			},
																			"region": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"type": {
																				"type": "string",
																				"enum": ["home", "work", "other"]
																			}
																		},
																		"required": [
																			"countryCode",
																			"line1",
																			"locality",
																			"type"
																		],
																		"additionalProperties": false
																	},
																	"email": {
																		"type": "object",
																		"properties": {
																			"address": {
																				"type": "string",
																				"maxLength": 254,
																				"format": "email",
																				"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
																			},
																			"type": {
																				"type": "string",
																				"enum": ["personal", "work", "other"]
																			}
																		},
																		"required": ["address", "type"],
																		"additionalProperties": false
																	},
																	"externalContactId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$",
																		"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
																	},
																	"fullName": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 200
																	},
																	"isCustomerSelf": { "type": "boolean" },
																	"isMain": { "type": "boolean" },
																	"phone": {
																		"type": "object",
																		"properties": {
																			"number": {
																				"type": "string",
																				"pattern": "^\\+[1-9]\\d{7,14}$"
																			},
																			"type": {
																				"type": "string",
																				"enum": [
																					"mobile",
																					"home",
																					"work",
																					"other"
																				]
																			}
																		},
																		"required": ["number", "type"],
																		"additionalProperties": false
																	}
																},
																"required": [
																	"fullName",
																	"isCustomerSelf",
																	"isMain"
																],
																"additionalProperties": false
															}
														},
														"safetyAssertions": {
															"maxItems": 5,
															"type": "array",
															"items": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"effectiveAt": {
																				"type": "string",
																				"format": "date-time",
																				"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
																			},
																			"state": {
																				"type": "string",
																				"enum": ["active", "cleared"]
																			},
																			"type": {
																				"type": "string",
																				"enum": [
																					"deceased_customer",
																					"legal_representation",
																					"safeguarding_risk",
																					"insolvency"
																				]
																			}
																		},
																		"required": [
																			"effectiveAt",
																			"state",
																			"type"
																		],
																		"additionalProperties": false
																	},
																	{
																		"type": "object",
																		"properties": {
																			"channels": {
																				"minItems": 1,
																				"maxItems": 4,
																				"type": "array",
																				"items": {
																					"type": "string",
																					"enum": [
																						"email",
																						"sms",
																						"phone",
																						"post"
																					]
																				}
																			},
																			"effectiveAt": {
																				"type": "string",
																				"format": "date-time",
																				"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
																			},
																			"state": {
																				"type": "string",
																				"enum": ["active", "cleared"]
																			},
																			"type": {
																				"type": "string",
																				"const": "client_do_not_contact"
																			}
																		},
																		"required": [
																			"channels",
																			"effectiveAt",
																			"state",
																			"type"
																		],
																		"additionalProperties": false
																	}
																]
															},
															"description": "At most one assertion per type; ordering is semantically irrelevant."
														}
													},
													"required": ["name", "type"],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"legalName": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "business" },
														"contacts": {
															"maxItems": 8,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"address": {
																		"type": "object",
																		"properties": {
																			"countryCode": {
																				"type": "string",
																				"pattern": "^[A-Z]{2}$"
																			},
																			"line1": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"line2": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"locality": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"postalCode": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 20
																			},
																			"region": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 120
																			},
																			"type": {
																				"type": "string",
																				"enum": ["home", "work", "other"]
																			}
																		},
																		"required": [
																			"countryCode",
																			"line1",
																			"locality",
																			"type"
																		],
																		"additionalProperties": false
																	},
																	"email": {
																		"type": "object",
																		"properties": {
																			"address": {
																				"type": "string",
																				"maxLength": 254,
																				"format": "email",
																				"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
																			},
																			"type": {
																				"type": "string",
																				"enum": ["personal", "work", "other"]
																			}
																		},
																		"required": ["address", "type"],
																		"additionalProperties": false
																	},
																	"externalContactId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$",
																		"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
																	},
																	"fullName": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 200
																	},
																	"isCustomerSelf": { "type": "boolean" },
																	"isMain": { "type": "boolean" },
																	"phone": {
																		"type": "object",
																		"properties": {
																			"number": {
																				"type": "string",
																				"pattern": "^\\+[1-9]\\d{7,14}$"
																			},
																			"type": {
																				"type": "string",
																				"enum": [
																					"mobile",
																					"home",
																					"work",
																					"other"
																				]
																			}
																		},
																		"required": ["number", "type"],
																		"additionalProperties": false
																	}
																},
																"required": [
																	"fullName",
																	"isCustomerSelf",
																	"isMain"
																],
																"additionalProperties": false
															}
														},
														"safetyAssertions": {
															"maxItems": 5,
															"type": "array",
															"items": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"effectiveAt": {
																				"type": "string",
																				"format": "date-time",
																				"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
																			},
																			"state": {
																				"type": "string",
																				"enum": ["active", "cleared"]
																			},
																			"type": {
																				"type": "string",
																				"enum": [
																					"deceased_customer",
																					"legal_representation",
																					"safeguarding_risk",
																					"insolvency"
																				]
																			}
																		},
																		"required": [
																			"effectiveAt",
																			"state",
																			"type"
																		],
																		"additionalProperties": false
																	},
																	{
																		"type": "object",
																		"properties": {
																			"channels": {
																				"minItems": 1,
																				"maxItems": 4,
																				"type": "array",
																				"items": {
																					"type": "string",
																					"enum": [
																						"email",
																						"sms",
																						"phone",
																						"post"
																					]
																				}
																			},
																			"effectiveAt": {
																				"type": "string",
																				"format": "date-time",
																				"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
																			},
																			"state": {
																				"type": "string",
																				"enum": ["active", "cleared"]
																			},
																			"type": {
																				"type": "string",
																				"const": "client_do_not_contact"
																			}
																		},
																		"required": [
																			"channels",
																			"effectiveAt",
																			"state",
																			"type"
																		],
																		"additionalProperties": false
																	}
																]
															},
															"description": "At most one assertion per type; ordering is semantically irrelevant."
														}
													},
													"required": ["legalName", "type"],
													"additionalProperties": false
												}
											]
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": { "type": "string", "const": "receivable" },
										"body": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"balanceBreakdown": {
															"type": "object",
															"properties": {
																"costs": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"fees": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"interest": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"principal": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																}
															},
															"required": [
																"costs",
																"fees",
																"interest",
																"principal"
															],
															"additionalProperties": false,
															"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
														},
														"creditUnion": {
															"type": "object",
															"properties": {
																"arrearsAmount": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"contractualInstalment": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "object",
																			"properties": {
																				"amount": {
																					"type": "string",
																					"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																				},
																				"currency": {
																					"type": "string",
																					"const": "EUR"
																				}
																			},
																			"required": ["amount", "currency"],
																			"additionalProperties": false
																		},
																		"frequency": {
																			"type": "string",
																			"enum": [
																				"weekly",
																				"fortnightly",
																				"monthly",
																				"quarterly",
																				"annual"
																			]
																		}
																	},
																	"required": ["amount", "frequency"],
																	"additionalProperties": false
																},
																"defaultDate": {
																	"type": "string",
																	"format": "date",
																	"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
																},
																"loanAccountReference": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 200
																},
																"loanType": {
																	"type": "string",
																	"enum": [
																		"personal_loan",
																		"mortgage",
																		"overdraft",
																		"credit_card",
																		"business_loan",
																		"other"
																	]
																},
																"totalOutstandingAmount": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																}
															},
															"required": ["loanAccountReference", "loanType"],
															"additionalProperties": false
														},
														"propertyManagement": { "not": {} },
														"financialType": {
															"type": "string",
															"enum": [
																"loan_instalment",
																"accelerated_balance",
																"loan_balance"
															]
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"dueDate": {
															"type": "string",
															"format": "date",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
														},
														"receivableSafetyAssertions": {
															"maxItems": 3,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"effectiveAt": {
																		"type": "string",
																		"format": "date-time",
																		"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
																	},
																	"state": {
																		"type": "string",
																		"enum": ["active", "cleared"]
																	},
																	"type": {
																		"type": "string",
																		"enum": [
																			"dispute",
																			"complaint",
																			"statute_barred"
																		]
																	}
																},
																"required": ["effectiveAt", "state", "type"],
																"additionalProperties": false
															},
															"description": "At most one assertion per type; ordering is semantically irrelevant."
														},
														"recoverableAmount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"responsibleCustomers": {
															"minItems": 1,
															"maxItems": 8,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"externalCustomerId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$",
																		"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
																	},
																	"role": {
																		"type": "string",
																		"enum": ["primary", "joint", "guarantor"]
																	}
																},
																"required": ["externalCustomerId", "role"],
																"additionalProperties": false
															},
															"description": "Customer identifiers must be unique and exactly one role must be primary."
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														}
													},
													"required": [
														"creditUnion",
														"financialType",
														"sourceRevision",
														"dueDate",
														"recoverableAmount",
														"responsibleCustomers",
														"sourceReference"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"balanceBreakdown": {
															"type": "object",
															"properties": {
																"costs": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"fees": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"interest": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																},
																"principal": {
																	"type": "object",
																	"properties": {
																		"amount": {
																			"type": "string",
																			"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																		},
																		"currency": {
																			"type": "string",
																			"const": "EUR"
																		}
																	},
																	"required": ["amount", "currency"],
																	"additionalProperties": false
																}
															},
															"required": [
																"costs",
																"fees",
																"interest",
																"principal"
															],
															"additionalProperties": false,
															"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
														},
														"creditUnion": { "not": {} },
														"propertyManagement": {
															"type": "object",
															"properties": {
																"version": { "type": "string", "const": "v1" },
																"developmentReference": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 200
																},
																"unitReference": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 200
																},
																"demandReference": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 200
																}
															},
															"required": [
																"version",
																"developmentReference",
																"unitReference",
																"demandReference"
															],
															"additionalProperties": false
														},
														"financialType": {
															"type": "string",
															"const": "service_charge_demand"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"dueDate": {
															"type": "string",
															"format": "date",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
														},
														"receivableSafetyAssertions": {
															"maxItems": 3,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"effectiveAt": {
																		"type": "string",
																		"format": "date-time",
																		"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
																	},
																	"state": {
																		"type": "string",
																		"enum": ["active", "cleared"]
																	},
																	"type": {
																		"type": "string",
																		"enum": [
																			"dispute",
																			"complaint",
																			"statute_barred"
																		]
																	}
																},
																"required": ["effectiveAt", "state", "type"],
																"additionalProperties": false
															},
															"description": "At most one assertion per type; ordering is semantically irrelevant."
														},
														"recoverableAmount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"responsibleCustomers": {
															"minItems": 1,
															"maxItems": 8,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"externalCustomerId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$",
																		"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
																	},
																	"role": {
																		"type": "string",
																		"enum": ["primary", "joint", "guarantor"]
																	}
																},
																"required": ["externalCustomerId", "role"],
																"additionalProperties": false
															},
															"description": "Customer identifiers must be unique and exactly one role must be primary."
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														}
													},
													"required": [
														"propertyManagement",
														"financialType",
														"sourceRevision",
														"dueDate",
														"recoverableAmount",
														"responsibleCustomers",
														"sourceReference"
													],
													"additionalProperties": false
												}
											],
											"description": "Each financial type requires exactly its industry context. The balance breakdown must sum exactly to recoverableAmount."
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": {
											"type": "string",
											"const": "payment_observation"
										},
										"body": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"method": {
															"type": "string",
															"enum": [
																"bank_transfer",
																"direct_debit",
																"card",
																"cash",
																"cheque",
																"unknown"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"allocations": {
															"description": "Explicit allocations to Receivables. Each Receivable may appear once and the total may not exceed amount; any remainder stays unapplied. When omitted, the connection's Client-approved allocation rule may apply, otherwise the whole amount stays unapplied.",
															"minItems": 1,
															"maxItems": 25,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"amount": {
																		"type": "object",
																		"properties": {
																			"amount": {
																				"type": "string",
																				"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																			},
																			"currency": {
																				"type": "string",
																				"const": "EUR"
																			}
																		},
																		"required": ["amount", "currency"],
																		"additionalProperties": false
																	},
																	"externalReceivableId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$"
																	}
																},
																"required": ["amount", "externalReceivableId"],
																"additionalProperties": false
															}
														},
														"externalCustomerId": {
															"description": "The paying Customer, when known. Required for a Client-approved allocation rule to apply; unapplied funds are associated with this Customer.",
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"type": { "type": "string", "const": "payment" }
													},
													"required": [
														"amount",
														"effectiveAt",
														"method",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"method": {
															"type": "string",
															"enum": [
																"bank_transfer",
																"direct_debit",
																"card",
																"cash",
																"cheque",
																"unknown"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"allocations": {
															"description": "The part of the correction returned to each Receivable the related Payment was allocated to. Each Receivable may appear once and the total may not exceed amount; any remainder is taken from the related Payment's unapplied funds. When omitted, the whole amount is taken from unapplied funds.",
															"minItems": 1,
															"maxItems": 25,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"amount": {
																		"type": "object",
																		"properties": {
																			"amount": {
																				"type": "string",
																				"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																			},
																			"currency": {
																				"type": "string",
																				"const": "EUR"
																			}
																		},
																		"required": ["amount", "currency"],
																		"additionalProperties": false
																	},
																	"externalReceivableId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$"
																	},
																	"resultingRecoverableAmount": {
																		"description": "Optional guard. When sent, it must equal the Receivable's locked working balance plus this amount, otherwise nothing is saved.",
																		"type": "object",
																		"properties": {
																			"amount": {
																				"type": "string",
																				"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																			},
																			"currency": {
																				"type": "string",
																				"const": "EUR"
																			}
																		},
																		"required": ["amount", "currency"],
																		"additionalProperties": false
																	}
																},
																"required": ["amount", "externalReceivableId"],
																"additionalProperties": false
															}
														},
														"relatedExternalPaymentObservationId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"type": { "type": "string", "const": "refund" }
													},
													"required": [
														"amount",
														"effectiveAt",
														"method",
														"sourceReference",
														"relatedExternalPaymentObservationId",
														"type"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"method": {
															"type": "string",
															"enum": [
																"bank_transfer",
																"direct_debit",
																"card",
																"cash",
																"cheque",
																"unknown"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"allocations": {
															"description": "The part of the correction returned to each Receivable the related Payment was allocated to. Each Receivable may appear once and the total may not exceed amount; any remainder is taken from the related Payment's unapplied funds. When omitted, the whole amount is taken from unapplied funds.",
															"minItems": 1,
															"maxItems": 25,
															"type": "array",
															"items": {
																"type": "object",
																"properties": {
																	"amount": {
																		"type": "object",
																		"properties": {
																			"amount": {
																				"type": "string",
																				"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																			},
																			"currency": {
																				"type": "string",
																				"const": "EUR"
																			}
																		},
																		"required": ["amount", "currency"],
																		"additionalProperties": false
																	},
																	"externalReceivableId": {
																		"type": "string",
																		"pattern": "^[A-Za-z0-9_-]{1,128}$"
																	},
																	"resultingRecoverableAmount": {
																		"description": "Optional guard. When sent, it must equal the Receivable's locked working balance plus this amount, otherwise nothing is saved.",
																		"type": "object",
																		"properties": {
																			"amount": {
																				"type": "string",
																				"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																			},
																			"currency": {
																				"type": "string",
																				"const": "EUR"
																			}
																		},
																		"required": ["amount", "currency"],
																		"additionalProperties": false
																	}
																},
																"required": ["amount", "externalReceivableId"],
																"additionalProperties": false
															}
														},
														"relatedExternalPaymentObservationId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"type": { "type": "string", "const": "reversal" }
													},
													"required": [
														"amount",
														"effectiveAt",
														"method",
														"sourceReference",
														"relatedExternalPaymentObservationId",
														"type"
													],
													"additionalProperties": false
												}
											],
											"description": "A payment applies explicit allocations first, otherwise a Client-approved allocation rule, otherwise it stays unapplied; only allocated amounts reduce a Receivable. A refund or reversal records an exact, possibly partial, amount against the original Payment: the part named in allocations returns to those Receivables and the remainder is taken from the Payment's unapplied funds. Cumulative corrections cannot exceed the Payment, any allocation, or the unapplied remainder. Recording evidence never executes a transfer."
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": { "type": "string", "const": "credit_note" },
										"body": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"enum": [
																"billing_correction",
																"contractual_credit"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "credit_note" }
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"enum": [
																"billing_correction",
																"source_adjustment"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "adjustment" },
														"direction": {
															"type": "string",
															"enum": ["increase", "decrease"]
														}
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type",
														"direction"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"const": "approved_write_off"
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "write_off" }
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												}
											]
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": { "type": "string", "const": "adjustment" },
										"body": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"enum": [
																"billing_correction",
																"contractual_credit"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "credit_note" }
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"enum": [
																"billing_correction",
																"source_adjustment"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "adjustment" },
														"direction": {
															"type": "string",
															"enum": ["increase", "decrease"]
														}
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type",
														"direction"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"const": "approved_write_off"
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "write_off" }
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												}
											]
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": { "type": "string", "const": "write_off" },
										"body": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"enum": [
																"billing_correction",
																"contractual_credit"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "credit_note" }
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"enum": [
																"billing_correction",
																"source_adjustment"
															]
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "adjustment" },
														"direction": {
															"type": "string",
															"enum": ["increase", "decrease"]
														}
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type",
														"direction"
													],
													"additionalProperties": false
												},
												{
													"type": "object",
													"properties": {
														"amount": {
															"type": "object",
															"properties": {
																"amount": {
																	"type": "string",
																	"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																},
																"currency": { "type": "string", "const": "EUR" }
															},
															"required": ["amount", "currency"],
															"additionalProperties": false
														},
														"externalReceivableId": {
															"type": "string",
															"pattern": "^[A-Za-z0-9_-]{1,128}$"
														},
														"sourceRevision": {
															"type": "integer",
															"exclusiveMinimum": 0,
															"maximum": 9007199254740991
														},
														"effectiveAt": {
															"type": "string",
															"format": "date-time",
															"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
														},
														"reason": {
															"type": "string",
															"const": "approved_write_off"
														},
														"sourceReference": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200
														},
														"type": { "type": "string", "const": "write_off" }
													},
													"required": [
														"amount",
														"externalReceivableId",
														"sourceRevision",
														"effectiveAt",
														"reason",
														"sourceReference",
														"type"
													],
													"additionalProperties": false
												}
											]
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"recordId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Identifier of this record within the batch. Unique in the batch."
										},
										"externalId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The external identifier the same synchronous operation takes in its URL path."
										},
										"dependsOn": {
											"description": "recordIds of earlier records that must succeed first. A record whose dependency did not succeed is never attempted.",
											"maxItems": 10,
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											}
										},
										"kind": { "type": "string", "const": "balance_snapshot" },
										"body": {
											"type": "object",
											"properties": {
												"asOf": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
													"description": "UTC time at which the Source produced these balances. Never earlier than the previous accepted snapshot."
												},
												"balances": {
													"minItems": 1,
													"maxItems": 100,
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"externalReceivableId": {
																"type": "string",
																"pattern": "^[A-Za-z0-9_-]{1,128}$"
															},
															"recoverableAmount": {
																"type": "object",
																"properties": {
																	"amount": {
																		"type": "string",
																		"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
																	},
																	"currency": {
																		"type": "string",
																		"const": "EUR"
																	}
																},
																"required": ["amount", "currency"],
																"additionalProperties": false,
																"description": "The Source's authoritative balance for this Receivable at asOf."
															},
															"sourceRevision": {
																"type": "integer",
																"exclusiveMinimum": 0,
																"maximum": 9007199254740991,
																"description": "The Receivable's Source revision this balance belongs to. Never lower than the accepted revision."
															}
														},
														"required": [
															"externalReceivableId",
															"recoverableAmount",
															"sourceRevision"
														],
														"additionalProperties": false
													},
													"description": "Incremental scope: Receivables omitted here are unaffected. Each Receivable appears at most once."
												},
												"sourcePosition": {
													"type": "integer",
													"exclusiveMinimum": 0,
													"maximum": 9007199254740991,
													"description": "Strictly increasing position of this snapshot in the Source's ordered feed, across the connection."
												}
											},
											"required": ["asOf", "balances", "sourcePosition"],
											"additionalProperties": false
										}
									},
									"required": ["recordId", "externalId", "kind", "body"],
									"additionalProperties": false
								}
							]
						},
						"description": "Processed in array order, at most 100 per batch. Each record is the exact body of the synchronous operation for its kind."
					}
				},
				"required": ["records"],
				"additionalProperties": false
			},
			"BatchResponse": {
				"type": "object",
				"properties": {
					"externalBatchId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"status": {
						"type": "string",
						"enum": [
							"queued",
							"running",
							"succeeded",
							"partially_succeeded",
							"failed"
						],
						"description": "queued and running mean work is outstanding; submission never implies acceptance. succeeded: every record succeeded. partially_succeeded: some records did not succeed. failed: no record succeeded."
					},
					"bookCompleteness": {
						"type": "string",
						"const": "not_declared",
						"description": "A batch never declares a complete book, and no missing-record processing follows from any batch outcome, however it finishes. Completeness is declared only through a separate verified complete-book declaration."
					},
					"submittedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"completedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"counts": {
						"type": "object",
						"properties": {
							"total": {
								"type": "integer",
								"minimum": -9007199254740991,
								"maximum": 9007199254740991
							},
							"pending": {
								"type": "integer",
								"minimum": -9007199254740991,
								"maximum": 9007199254740991
							},
							"succeeded": {
								"type": "integer",
								"minimum": -9007199254740991,
								"maximum": 9007199254740991
							},
							"failed": {
								"type": "integer",
								"minimum": -9007199254740991,
								"maximum": 9007199254740991
							},
							"dependencyFailed": {
								"type": "integer",
								"minimum": -9007199254740991,
								"maximum": 9007199254740991
							}
						},
						"required": [
							"total",
							"pending",
							"succeeded",
							"failed",
							"dependencyFailed"
						],
						"additionalProperties": false
					},
					"records": {
						"maxItems": 100,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"position": { "type": "integer", "minimum": 1, "maximum": 100 },
								"recordId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"kind": {
									"type": "string",
									"enum": [
										"customer",
										"receivable",
										"payment_observation",
										"credit_note",
										"adjustment",
										"write_off",
										"balance_snapshot"
									]
								},
								"externalId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								},
								"status": {
									"type": "string",
									"enum": [
										"pending",
										"succeeded",
										"failed",
										"dependency_failed"
									],
									"description": "pending: not yet finished. succeeded: the synchronous operation accepted it (httpStatus 201 created, 200 updated or identical replay). failed: the operation refused it; problem names why. dependency_failed: not attempted because blockedBy did not succeed."
								},
								"httpStatus": {
									"type": "integer",
									"minimum": -9007199254740991,
									"maximum": 9007199254740991
								},
								"problem": {
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"description": "Problem code, documented at https://docs.paypathiq.com/problems/{code}."
										}
									},
									"required": ["type"],
									"additionalProperties": false
								},
								"blockedBy": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								}
							},
							"required": [
								"position",
								"recordId",
								"kind",
								"externalId",
								"status"
							],
							"additionalProperties": false
						}
					}
				},
				"required": [
					"externalBatchId",
					"status",
					"bookCompleteness",
					"submittedAt",
					"counts",
					"records"
				],
				"additionalProperties": false
			},
			"ChangeEvent": {
				"type": "object",
				"properties": {
					"eventId": {
						"type": "string",
						"format": "uuid",
						"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
						"description": "Stable identity of this change. A consumer sees the same eventId on every read and may use it to discard duplicates."
					},
					"occurredAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
						"description": "UTC time at which the change was committed."
					},
					"resource": {
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$",
								"description": "The caller-assigned identifier used in the resource URL."
							},
							"type": {
								"type": "string",
								"enum": [
									"customer",
									"receivable",
									"payment_request",
									"reconciliation",
									"receipt_delivery",
									"payment_delivery"
								]
							}
						},
						"required": ["id", "type"],
						"additionalProperties": false
					},
					"revision": {
						"type": "integer",
						"minimum": 1,
						"maximum": 9007199254740991,
						"description": "Accepted revision of the resource when the change committed. Fetch the resource for current detail."
					},
					"type": {
						"type": "string",
						"enum": [
							"customer.created",
							"customer.updated",
							"receivable.created",
							"receivable.updated",
							"payment_request.created",
							"payment_request.updated",
							"reconciliation.created",
							"reconciliation.updated",
							"receipt_delivery.created",
							"receipt_delivery.updated",
							"payment_delivery.created"
						]
					}
				},
				"required": ["eventId", "occurredAt", "resource", "revision", "type"],
				"additionalProperties": false
			},
			"ChangeFeedResponse": {
				"type": "object",
				"properties": {
					"data": {
						"maxItems": 500,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"eventId": {
									"type": "string",
									"format": "uuid",
									"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
									"description": "Stable identity of this change. A consumer sees the same eventId on every read and may use it to discard duplicates."
								},
								"occurredAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
									"description": "UTC time at which the change was committed."
								},
								"resource": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "The caller-assigned identifier used in the resource URL."
										},
										"type": {
											"type": "string",
											"enum": [
												"customer",
												"receivable",
												"payment_request",
												"reconciliation",
												"receipt_delivery",
												"payment_delivery"
											]
										}
									},
									"required": ["id", "type"],
									"additionalProperties": false
								},
								"revision": {
									"type": "integer",
									"minimum": 1,
									"maximum": 9007199254740991,
									"description": "Accepted revision of the resource when the change committed. Fetch the resource for current detail."
								},
								"type": {
									"type": "string",
									"enum": [
										"customer.created",
										"customer.updated",
										"receivable.created",
										"receivable.updated",
										"payment_request.created",
										"payment_request.updated",
										"reconciliation.created",
										"reconciliation.updated",
										"receipt_delivery.created",
										"receipt_delivery.updated",
										"payment_delivery.created"
									]
								}
							},
							"required": [
								"eventId",
								"occurredAt",
								"resource",
								"revision",
								"type"
							],
							"additionalProperties": false
						}
					},
					"hasMore": {
						"type": "boolean",
						"description": "True when more changes are available after nextCursor."
					},
					"nextCursor": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200,
						"description": "Cursor to send as cursor on the next request. Always present, including on an empty page; store it only after you have processed data."
					}
				},
				"required": ["data", "hasMore", "nextCursor"],
				"additionalProperties": false
			},
			"ConfigureWebhookEndpointCommand": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"minLength": 1,
						"maxLength": 2048,
						"description": "HTTPS URL that receives change notifications. It must use port 443, a public DNS name and no embedded credentials."
					}
				},
				"required": ["url"],
				"additionalProperties": false
			},
			"DisableWebhookEndpointCommand": {
				"type": "object",
				"properties": {},
				"additionalProperties": false
			},
			"RotateWebhookSecretCommand": {
				"type": "object",
				"properties": {},
				"additionalProperties": false
			},
			"WebhookEndpointResponse": {
				"type": "object",
				"properties": {
					"disabledReason": {
						"anyOf": [
							{
								"type": "string",
								"enum": [
									"client_disabled",
									"destination_unsafe",
									"grant_revoked"
								]
							},
							{ "type": "null" }
						],
						"description": "Why delivery stopped. Null while the endpoint is active. Configure the endpoint again after fixing the cause."
					},
					"secretVersion": {
						"type": "integer",
						"minimum": 1,
						"maximum": 9007199254740991,
						"description": "Increases each time the signing secret is rotated."
					},
					"signingSecret": {
						"description": "Signing secret. Returned only when the endpoint is first configured or the secret is rotated; store it immediately.",
						"type": "string"
					},
					"status": { "type": "string", "enum": ["active", "disabled"] },
					"url": { "type": "string" }
				},
				"required": ["disabledReason", "secretVersion", "status", "url"],
				"additionalProperties": false
			},
			"WebhookNotification": {
				"type": "object",
				"properties": {
					"clientCode": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$",
						"description": "The Client whose resource changed."
					},
					"eventId": {
						"type": "string",
						"format": "uuid",
						"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
						"description": "Stable identity of the change, identical to the eventId in the change feed. Discard repeats."
					},
					"occurredAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"resource": {
						"type": "object",
						"properties": {
							"id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" },
							"type": {
								"type": "string",
								"enum": [
									"customer",
									"receivable",
									"payment_request",
									"reconciliation",
									"receipt_delivery",
									"payment_delivery"
								]
							}
						},
						"required": ["id", "type"],
						"additionalProperties": false
					},
					"revision": {
						"type": "integer",
						"minimum": 1,
						"maximum": 9007199254740991,
						"description": "Accepted revision when the change committed. Notifications can arrive late or out of order: compare it with the revision you already hold."
					},
					"type": {
						"type": "string",
						"enum": [
							"customer.created",
							"customer.updated",
							"receivable.created",
							"receivable.updated",
							"payment_request.created",
							"payment_request.updated",
							"reconciliation.created",
							"reconciliation.updated",
							"receipt_delivery.created",
							"receipt_delivery.updated",
							"payment_delivery.created"
						]
					}
				},
				"required": [
					"clientCode",
					"eventId",
					"occurredAt",
					"resource",
					"revision",
					"type"
				],
				"additionalProperties": false
			},
			"ClearPauseReceivableCommand": {
				"type": "object",
				"properties": {
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					}
				},
				"required": ["effectiveAt"],
				"additionalProperties": false
			},
			"CloseReceivableCommand": {
				"type": "object",
				"properties": {
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": {
						"type": "string",
						"enum": ["satisfied", "withdrawn", "written_off", "transferred"]
					}
				},
				"required": ["effectiveAt", "reason"],
				"additionalProperties": false
			},
			"ContractualInstalment": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"frequency": {
						"type": "string",
						"enum": ["weekly", "fortnightly", "monthly", "quarterly", "annual"]
					}
				},
				"required": ["amount", "frequency"],
				"additionalProperties": false
			},
			"CreditUnionV1": {
				"type": "object",
				"properties": {
					"arrearsAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"contractualInstalment": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"frequency": {
								"type": "string",
								"enum": [
									"weekly",
									"fortnightly",
									"monthly",
									"quarterly",
									"annual"
								]
							}
						},
						"required": ["amount", "frequency"],
						"additionalProperties": false
					},
					"defaultDate": {
						"type": "string",
						"format": "date",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
					},
					"loanAccountReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"loanType": {
						"type": "string",
						"enum": [
							"personal_loan",
							"mortgage",
							"overdraft",
							"credit_card",
							"business_loan",
							"other"
						]
					},
					"totalOutstandingAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					}
				},
				"required": ["loanAccountReference", "loanType"],
				"additionalProperties": false
			},
			"ExternalResourceId": {
				"type": "string",
				"pattern": "^[A-Za-z0-9_-]{1,128}$"
			},
			"Money": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "string",
						"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
					},
					"currency": { "type": "string", "const": "EUR" }
				},
				"required": ["amount", "currency"],
				"additionalProperties": false
			},
			"CreditNote": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": {
						"type": "string",
						"enum": ["billing_correction", "contractual_credit"]
					},
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"type": { "type": "string", "const": "credit_note" }
				},
				"required": [
					"amount",
					"externalReceivableId",
					"sourceRevision",
					"effectiveAt",
					"reason",
					"sourceReference",
					"type"
				],
				"additionalProperties": false
			},
			"Adjustment": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": {
						"type": "string",
						"enum": ["billing_correction", "source_adjustment"]
					},
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"type": { "type": "string", "const": "adjustment" },
					"direction": { "type": "string", "enum": ["increase", "decrease"] }
				},
				"required": [
					"amount",
					"externalReceivableId",
					"sourceRevision",
					"effectiveAt",
					"reason",
					"sourceReference",
					"type",
					"direction"
				],
				"additionalProperties": false
			},
			"WriteOff": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": { "type": "string", "const": "approved_write_off" },
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"type": { "type": "string", "const": "write_off" }
				},
				"required": [
					"amount",
					"externalReceivableId",
					"sourceRevision",
					"effectiveAt",
					"reason",
					"sourceReference",
					"type"
				],
				"additionalProperties": false
			},
			"CreditNoteResponse": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": {
						"type": "string",
						"enum": ["billing_correction", "contractual_credit"]
					},
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"type": { "type": "string", "const": "credit_note" },
					"externalEventId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"acceptedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					}
				},
				"required": [
					"amount",
					"externalReceivableId",
					"sourceRevision",
					"effectiveAt",
					"reason",
					"sourceReference",
					"type",
					"externalEventId",
					"acceptedAt"
				],
				"additionalProperties": false
			},
			"AdjustmentResponse": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": {
						"type": "string",
						"enum": ["billing_correction", "source_adjustment"]
					},
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"type": { "type": "string", "const": "adjustment" },
					"direction": { "type": "string", "enum": ["increase", "decrease"] },
					"externalEventId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"acceptedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					}
				},
				"required": [
					"amount",
					"externalReceivableId",
					"sourceRevision",
					"effectiveAt",
					"reason",
					"sourceReference",
					"type",
					"direction",
					"externalEventId",
					"acceptedAt"
				],
				"additionalProperties": false
			},
			"WriteOffResponse": {
				"type": "object",
				"properties": {
					"amount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"externalReceivableId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": { "type": "string", "const": "approved_write_off" },
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					},
					"type": { "type": "string", "const": "write_off" },
					"externalEventId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"acceptedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					}
				},
				"required": [
					"amount",
					"externalReceivableId",
					"sourceRevision",
					"effectiveAt",
					"reason",
					"sourceReference",
					"type",
					"externalEventId",
					"acceptedAt"
				],
				"additionalProperties": false
			},
			"Customer": {
				"anyOf": [
					{
						"type": "object",
						"properties": {
							"name": {
								"type": "object",
								"properties": {
									"firstName": {
										"type": "string",
										"minLength": 1,
										"maxLength": 120
									},
									"lastName": {
										"type": "string",
										"minLength": 1,
										"maxLength": 120
									},
									"middleNames": {
										"maxItems": 3,
										"type": "array",
										"items": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										}
									}
								},
								"required": ["firstName", "lastName"],
								"additionalProperties": false
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"type": { "type": "string", "const": "person" },
							"contacts": {
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"address": {
											"type": "object",
											"properties": {
												"countryCode": {
													"type": "string",
													"pattern": "^[A-Z]{2}$"
												},
												"line1": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"line2": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"locality": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"postalCode": {
													"type": "string",
													"minLength": 1,
													"maxLength": 20
												},
												"region": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"type": {
													"type": "string",
													"enum": ["home", "work", "other"]
												}
											},
											"required": ["countryCode", "line1", "locality", "type"],
											"additionalProperties": false
										},
										"email": {
											"type": "object",
											"properties": {
												"address": {
													"type": "string",
													"maxLength": 254,
													"format": "email",
													"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
												},
												"type": {
													"type": "string",
													"enum": ["personal", "work", "other"]
												}
											},
											"required": ["address", "type"],
											"additionalProperties": false
										},
										"externalContactId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
										},
										"fullName": {
											"type": "string",
											"minLength": 1,
											"maxLength": 200
										},
										"isCustomerSelf": { "type": "boolean" },
										"isMain": { "type": "boolean" },
										"phone": {
											"type": "object",
											"properties": {
												"number": {
													"type": "string",
													"pattern": "^\\+[1-9]\\d{7,14}$"
												},
												"type": {
													"type": "string",
													"enum": ["mobile", "home", "work", "other"]
												}
											},
											"required": ["number", "type"],
											"additionalProperties": false
										}
									},
									"required": ["fullName", "isCustomerSelf", "isMain"],
									"additionalProperties": false
								}
							},
							"safetyAssertions": {
								"maxItems": 5,
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"enum": [
														"deceased_customer",
														"legal_representation",
														"safeguarding_risk",
														"insolvency"
													]
												}
											},
											"required": ["effectiveAt", "state", "type"],
											"additionalProperties": false
										},
										{
											"type": "object",
											"properties": {
												"channels": {
													"minItems": 1,
													"maxItems": 4,
													"type": "array",
													"items": {
														"type": "string",
														"enum": ["email", "sms", "phone", "post"]
													}
												},
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"const": "client_do_not_contact"
												}
											},
											"required": ["channels", "effectiveAt", "state", "type"],
											"additionalProperties": false
										}
									]
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							}
						},
						"required": ["name", "type"],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"legalName": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"type": { "type": "string", "const": "business" },
							"contacts": {
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"address": {
											"type": "object",
											"properties": {
												"countryCode": {
													"type": "string",
													"pattern": "^[A-Z]{2}$"
												},
												"line1": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"line2": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"locality": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"postalCode": {
													"type": "string",
													"minLength": 1,
													"maxLength": 20
												},
												"region": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"type": {
													"type": "string",
													"enum": ["home", "work", "other"]
												}
											},
											"required": ["countryCode", "line1", "locality", "type"],
											"additionalProperties": false
										},
										"email": {
											"type": "object",
											"properties": {
												"address": {
													"type": "string",
													"maxLength": 254,
													"format": "email",
													"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
												},
												"type": {
													"type": "string",
													"enum": ["personal", "work", "other"]
												}
											},
											"required": ["address", "type"],
											"additionalProperties": false
										},
										"externalContactId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
										},
										"fullName": {
											"type": "string",
											"minLength": 1,
											"maxLength": 200
										},
										"isCustomerSelf": { "type": "boolean" },
										"isMain": { "type": "boolean" },
										"phone": {
											"type": "object",
											"properties": {
												"number": {
													"type": "string",
													"pattern": "^\\+[1-9]\\d{7,14}$"
												},
												"type": {
													"type": "string",
													"enum": ["mobile", "home", "work", "other"]
												}
											},
											"required": ["number", "type"],
											"additionalProperties": false
										}
									},
									"required": ["fullName", "isCustomerSelf", "isMain"],
									"additionalProperties": false
								}
							},
							"safetyAssertions": {
								"maxItems": 5,
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"enum": [
														"deceased_customer",
														"legal_representation",
														"safeguarding_risk",
														"insolvency"
													]
												}
											},
											"required": ["effectiveAt", "state", "type"],
											"additionalProperties": false
										},
										{
											"type": "object",
											"properties": {
												"channels": {
													"minItems": 1,
													"maxItems": 4,
													"type": "array",
													"items": {
														"type": "string",
														"enum": ["email", "sms", "phone", "post"]
													}
												},
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"const": "client_do_not_contact"
												}
											},
											"required": ["channels", "effectiveAt", "state", "type"],
											"additionalProperties": false
										}
									]
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							}
						},
						"required": ["legalName", "type"],
						"additionalProperties": false
					}
				]
			},
			"CustomerContact": {
				"type": "object",
				"properties": {
					"address": {
						"type": "object",
						"properties": {
							"countryCode": { "type": "string", "pattern": "^[A-Z]{2}$" },
							"line1": { "type": "string", "minLength": 1, "maxLength": 120 },
							"line2": { "type": "string", "minLength": 1, "maxLength": 120 },
							"locality": {
								"type": "string",
								"minLength": 1,
								"maxLength": 120
							},
							"postalCode": {
								"type": "string",
								"minLength": 1,
								"maxLength": 20
							},
							"region": { "type": "string", "minLength": 1, "maxLength": 120 },
							"type": { "type": "string", "enum": ["home", "work", "other"] }
						},
						"required": ["countryCode", "line1", "locality", "type"],
						"additionalProperties": false
					},
					"email": {
						"type": "object",
						"properties": {
							"address": {
								"type": "string",
								"maxLength": 254,
								"format": "email",
								"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
							},
							"type": {
								"type": "string",
								"enum": ["personal", "work", "other"]
							}
						},
						"required": ["address", "type"],
						"additionalProperties": false
					},
					"externalContactId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$",
						"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
					},
					"fullName": { "type": "string", "minLength": 1, "maxLength": 200 },
					"isCustomerSelf": { "type": "boolean" },
					"isMain": { "type": "boolean" },
					"phone": {
						"type": "object",
						"properties": {
							"number": { "type": "string", "pattern": "^\\+[1-9]\\d{7,14}$" },
							"type": {
								"type": "string",
								"enum": ["mobile", "home", "work", "other"]
							}
						},
						"required": ["number", "type"],
						"additionalProperties": false
					}
				},
				"required": ["fullName", "isCustomerSelf", "isMain"],
				"additionalProperties": false
			},
			"CustomerContactAddress": {
				"type": "object",
				"properties": {
					"countryCode": { "type": "string", "pattern": "^[A-Z]{2}$" },
					"line1": { "type": "string", "minLength": 1, "maxLength": 120 },
					"line2": { "type": "string", "minLength": 1, "maxLength": 120 },
					"locality": { "type": "string", "minLength": 1, "maxLength": 120 },
					"postalCode": { "type": "string", "minLength": 1, "maxLength": 20 },
					"region": { "type": "string", "minLength": 1, "maxLength": 120 },
					"type": { "type": "string", "enum": ["home", "work", "other"] }
				},
				"required": ["countryCode", "line1", "locality", "type"],
				"additionalProperties": false
			},
			"CustomerContactEmail": {
				"type": "object",
				"properties": {
					"address": {
						"type": "string",
						"maxLength": 254,
						"format": "email",
						"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
					},
					"type": { "type": "string", "enum": ["personal", "work", "other"] }
				},
				"required": ["address", "type"],
				"additionalProperties": false
			},
			"CustomerContactPhone": {
				"type": "object",
				"properties": {
					"number": { "type": "string", "pattern": "^\\+[1-9]\\d{7,14}$" },
					"type": {
						"type": "string",
						"enum": ["mobile", "home", "work", "other"]
					}
				},
				"required": ["number", "type"],
				"additionalProperties": false
			},
			"CustomerMergePatch": {
				"type": "object",
				"properties": {
					"contacts": {
						"maxItems": 8,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"address": {
									"type": "object",
									"properties": {
										"countryCode": {
											"type": "string",
											"pattern": "^[A-Z]{2}$"
										},
										"line1": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										},
										"line2": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										},
										"locality": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										},
										"postalCode": {
											"type": "string",
											"minLength": 1,
											"maxLength": 20
										},
										"region": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										},
										"type": {
											"type": "string",
											"enum": ["home", "work", "other"]
										}
									},
									"required": ["countryCode", "line1", "locality", "type"],
									"additionalProperties": false
								},
								"email": {
									"type": "object",
									"properties": {
										"address": {
											"type": "string",
											"maxLength": 254,
											"format": "email",
											"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
										},
										"type": {
											"type": "string",
											"enum": ["personal", "work", "other"]
										}
									},
									"required": ["address", "type"],
									"additionalProperties": false
								},
								"externalContactId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$",
									"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
								},
								"fullName": {
									"type": "string",
									"minLength": 1,
									"maxLength": 200
								},
								"isCustomerSelf": { "type": "boolean" },
								"isMain": { "type": "boolean" },
								"phone": {
									"type": "object",
									"properties": {
										"number": {
											"type": "string",
											"pattern": "^\\+[1-9]\\d{7,14}$"
										},
										"type": {
											"type": "string",
											"enum": ["mobile", "home", "work", "other"]
										}
									},
									"required": ["number", "type"],
									"additionalProperties": false
								}
							},
							"required": ["fullName", "isCustomerSelf", "isMain"],
							"additionalProperties": false
						}
					},
					"legalName": { "type": "string", "minLength": 1, "maxLength": 200 },
					"name": {
						"type": "object",
						"properties": {
							"firstName": {
								"type": "string",
								"minLength": 1,
								"maxLength": 120
							},
							"lastName": {
								"type": "string",
								"minLength": 1,
								"maxLength": 120
							},
							"middleNames": {
								"anyOf": [
									{
										"maxItems": 3,
										"type": "array",
										"items": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										}
									},
									{ "type": "null" }
								]
							}
						},
						"additionalProperties": false
					},
					"safetyAssertions": {
						"maxItems": 5,
						"type": "array",
						"items": {
							"oneOf": [
								{
									"type": "object",
									"properties": {
										"effectiveAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"state": {
											"type": "string",
											"enum": ["active", "cleared"]
										},
										"type": {
											"type": "string",
											"enum": [
												"deceased_customer",
												"legal_representation",
												"safeguarding_risk",
												"insolvency"
											]
										}
									},
									"required": ["effectiveAt", "state", "type"],
									"additionalProperties": false
								},
								{
									"type": "object",
									"properties": {
										"channels": {
											"minItems": 1,
											"maxItems": 4,
											"type": "array",
											"items": {
												"type": "string",
												"enum": ["email", "sms", "phone", "post"]
											}
										},
										"effectiveAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"state": {
											"type": "string",
											"enum": ["active", "cleared"]
										},
										"type": {
											"type": "string",
											"const": "client_do_not_contact"
										}
									},
									"required": ["channels", "effectiveAt", "state", "type"],
									"additionalProperties": false
								}
							]
						},
						"description": "At most one assertion per type; ordering is semantically irrelevant."
					},
					"sourceReference": {
						"anyOf": [
							{ "type": "string", "minLength": 1, "maxLength": 200 },
							{ "type": "null" }
						]
					}
				},
				"additionalProperties": false
			},
			"CustomerResponse": {
				"anyOf": [
					{
						"type": "object",
						"properties": {
							"name": {
								"type": "object",
								"properties": {
									"firstName": {
										"type": "string",
										"minLength": 1,
										"maxLength": 120
									},
									"lastName": {
										"type": "string",
										"minLength": 1,
										"maxLength": 120
									},
									"middleNames": {
										"maxItems": 3,
										"type": "array",
										"items": {
											"type": "string",
											"minLength": 1,
											"maxLength": 120
										}
									}
								},
								"required": ["firstName", "lastName"],
								"additionalProperties": false
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"type": { "type": "string", "const": "person" },
							"contacts": {
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"address": {
											"type": "object",
											"properties": {
												"countryCode": {
													"type": "string",
													"pattern": "^[A-Z]{2}$"
												},
												"line1": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"line2": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"locality": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"postalCode": {
													"type": "string",
													"minLength": 1,
													"maxLength": 20
												},
												"region": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"type": {
													"type": "string",
													"enum": ["home", "work", "other"]
												}
											},
											"required": ["countryCode", "line1", "locality", "type"],
											"additionalProperties": false
										},
										"email": {
											"type": "object",
											"properties": {
												"address": {
													"type": "string",
													"maxLength": 254,
													"format": "email",
													"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
												},
												"type": {
													"type": "string",
													"enum": ["personal", "work", "other"]
												}
											},
											"required": ["address", "type"],
											"additionalProperties": false
										},
										"externalContactId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
										},
										"fullName": {
											"type": "string",
											"minLength": 1,
											"maxLength": 200
										},
										"isCustomerSelf": { "type": "boolean" },
										"isMain": { "type": "boolean" },
										"phone": {
											"type": "object",
											"properties": {
												"number": {
													"type": "string",
													"pattern": "^\\+[1-9]\\d{7,14}$"
												},
												"type": {
													"type": "string",
													"enum": ["mobile", "home", "work", "other"]
												}
											},
											"required": ["number", "type"],
											"additionalProperties": false
										}
									},
									"required": ["fullName", "isCustomerSelf", "isMain"],
									"additionalProperties": false
								}
							},
							"safetyAssertions": {
								"maxItems": 5,
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"enum": [
														"deceased_customer",
														"legal_representation",
														"safeguarding_risk",
														"insolvency"
													]
												}
											},
											"required": ["effectiveAt", "state", "type"],
											"additionalProperties": false
										},
										{
											"type": "object",
											"properties": {
												"channels": {
													"minItems": 1,
													"maxItems": 4,
													"type": "array",
													"items": {
														"type": "string",
														"enum": ["email", "sms", "phone", "post"]
													}
												},
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"const": "client_do_not_contact"
												}
											},
											"required": ["channels", "effectiveAt", "state", "type"],
											"additionalProperties": false
										}
									]
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							},
							"externalCustomerId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$",
								"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
							},
							"updatedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							}
						},
						"required": ["name", "type", "externalCustomerId", "updatedAt"],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"legalName": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"type": { "type": "string", "const": "business" },
							"contacts": {
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"address": {
											"type": "object",
											"properties": {
												"countryCode": {
													"type": "string",
													"pattern": "^[A-Z]{2}$"
												},
												"line1": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"line2": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"locality": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"postalCode": {
													"type": "string",
													"minLength": 1,
													"maxLength": 20
												},
												"region": {
													"type": "string",
													"minLength": 1,
													"maxLength": 120
												},
												"type": {
													"type": "string",
													"enum": ["home", "work", "other"]
												}
											},
											"required": ["countryCode", "line1", "locality", "type"],
											"additionalProperties": false
										},
										"email": {
											"type": "object",
											"properties": {
												"address": {
													"type": "string",
													"maxLength": 254,
													"format": "email",
													"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
												},
												"type": {
													"type": "string",
													"enum": ["personal", "work", "other"]
												}
											},
											"required": ["address", "type"],
											"additionalProperties": false
										},
										"externalContactId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, stable, non-sensitive identifier for this Contact within its Customer. Required to change Contacts after the Customer is created."
										},
										"fullName": {
											"type": "string",
											"minLength": 1,
											"maxLength": 200
										},
										"isCustomerSelf": { "type": "boolean" },
										"isMain": { "type": "boolean" },
										"phone": {
											"type": "object",
											"properties": {
												"number": {
													"type": "string",
													"pattern": "^\\+[1-9]\\d{7,14}$"
												},
												"type": {
													"type": "string",
													"enum": ["mobile", "home", "work", "other"]
												}
											},
											"required": ["number", "type"],
											"additionalProperties": false
										}
									},
									"required": ["fullName", "isCustomerSelf", "isMain"],
									"additionalProperties": false
								}
							},
							"safetyAssertions": {
								"maxItems": 5,
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"enum": [
														"deceased_customer",
														"legal_representation",
														"safeguarding_risk",
														"insolvency"
													]
												}
											},
											"required": ["effectiveAt", "state", "type"],
											"additionalProperties": false
										},
										{
											"type": "object",
											"properties": {
												"channels": {
													"minItems": 1,
													"maxItems": 4,
													"type": "array",
													"items": {
														"type": "string",
														"enum": ["email", "sms", "phone", "post"]
													}
												},
												"effectiveAt": {
													"type": "string",
													"format": "date-time",
													"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
												},
												"state": {
													"type": "string",
													"enum": ["active", "cleared"]
												},
												"type": {
													"type": "string",
													"const": "client_do_not_contact"
												}
											},
											"required": ["channels", "effectiveAt", "state", "type"],
											"additionalProperties": false
										}
									]
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							},
							"externalCustomerId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$",
								"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
							},
							"updatedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							}
						},
						"required": [
							"legalName",
							"type",
							"externalCustomerId",
							"updatedAt"
						],
						"additionalProperties": false
					}
				]
			},
			"CustomerSafetyAssertion": {
				"oneOf": [
					{
						"type": "object",
						"properties": {
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"state": { "type": "string", "enum": ["active", "cleared"] },
							"type": {
								"type": "string",
								"enum": [
									"deceased_customer",
									"legal_representation",
									"safeguarding_risk",
									"insolvency"
								]
							}
						},
						"required": ["effectiveAt", "state", "type"],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"channels": {
								"minItems": 1,
								"maxItems": 4,
								"type": "array",
								"items": {
									"type": "string",
									"enum": ["email", "sms", "phone", "post"]
								}
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"state": { "type": "string", "enum": ["active", "cleared"] },
							"type": { "type": "string", "const": "client_do_not_contact" }
						},
						"required": ["channels", "effectiveAt", "state", "type"],
						"additionalProperties": false
					}
				]
			},
			"PauseReceivableCommand": {
				"type": "object",
				"properties": {
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"reason": {
						"type": "string",
						"enum": [
							"client_instruction",
							"payment_arrangement",
							"temporary_hardship",
							"legal_review",
							"reconciliation_review"
						]
					}
				},
				"required": ["effectiveAt", "reason"],
				"additionalProperties": false
			},
			"PaymentObservation": {
				"oneOf": [
					{
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"method": {
								"type": "string",
								"enum": [
									"bank_transfer",
									"direct_debit",
									"card",
									"cash",
									"cheque",
									"unknown"
								]
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"allocations": {
								"description": "Explicit allocations to Receivables. Each Receivable may appear once and the total may not exceed amount; any remainder stays unapplied. When omitted, the connection's Client-approved allocation rule may apply, otherwise the whole amount stays unapplied.",
								"minItems": 1,
								"maxItems": 25,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"externalReceivableId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										}
									},
									"required": ["amount", "externalReceivableId"],
									"additionalProperties": false
								}
							},
							"externalCustomerId": {
								"description": "The paying Customer, when known. Required for a Client-approved allocation rule to apply; unapplied funds are associated with this Customer.",
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"type": { "type": "string", "const": "payment" }
						},
						"required": [
							"amount",
							"effectiveAt",
							"method",
							"sourceReference",
							"type"
						],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"method": {
								"type": "string",
								"enum": [
									"bank_transfer",
									"direct_debit",
									"card",
									"cash",
									"cheque",
									"unknown"
								]
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"allocations": {
								"description": "The part of the correction returned to each Receivable the related Payment was allocated to. Each Receivable may appear once and the total may not exceed amount; any remainder is taken from the related Payment's unapplied funds. When omitted, the whole amount is taken from unapplied funds.",
								"minItems": 1,
								"maxItems": 25,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"externalReceivableId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										},
										"resultingRecoverableAmount": {
											"description": "Optional guard. When sent, it must equal the Receivable's locked working balance plus this amount, otherwise nothing is saved.",
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										}
									},
									"required": ["amount", "externalReceivableId"],
									"additionalProperties": false
								}
							},
							"relatedExternalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"type": { "type": "string", "const": "refund" }
						},
						"required": [
							"amount",
							"effectiveAt",
							"method",
							"sourceReference",
							"relatedExternalPaymentObservationId",
							"type"
						],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"method": {
								"type": "string",
								"enum": [
									"bank_transfer",
									"direct_debit",
									"card",
									"cash",
									"cheque",
									"unknown"
								]
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"allocations": {
								"description": "The part of the correction returned to each Receivable the related Payment was allocated to. Each Receivable may appear once and the total may not exceed amount; any remainder is taken from the related Payment's unapplied funds. When omitted, the whole amount is taken from unapplied funds.",
								"minItems": 1,
								"maxItems": 25,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"externalReceivableId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										},
										"resultingRecoverableAmount": {
											"description": "Optional guard. When sent, it must equal the Receivable's locked working balance plus this amount, otherwise nothing is saved.",
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										}
									},
									"required": ["amount", "externalReceivableId"],
									"additionalProperties": false
								}
							},
							"relatedExternalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"type": { "type": "string", "const": "reversal" }
						},
						"required": [
							"amount",
							"effectiveAt",
							"method",
							"sourceReference",
							"relatedExternalPaymentObservationId",
							"type"
						],
						"additionalProperties": false
					}
				],
				"description": "A payment applies explicit allocations first, otherwise a Client-approved allocation rule, otherwise it stays unapplied; only allocated amounts reduce a Receivable. A refund or reversal records an exact, possibly partial, amount against the original Payment: the part named in allocations returns to those Receivables and the remainder is taken from the Payment's unapplied funds. Cumulative corrections cannot exceed the Payment, any allocation, or the unapplied remainder. Recording evidence never executes a transfer."
			},
			"PaymentRequest": {
				"type": "object",
				"properties": {
					"externalCustomerId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$",
						"description": "The paying Customer. The Customer must be liable for every listed Receivable."
					},
					"items": {
						"minItems": 1,
						"maxItems": 25,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"amount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false,
									"description": "The exact current working balance of this Receivable. A request cannot pay part of a Receivable, more than it, or a different Receivable."
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								}
							},
							"required": ["amount", "externalReceivableId"],
							"additionalProperties": false
						},
						"description": "The Receivables and amounts the hosted payment page may collect. Each Receivable may appear once."
					}
				},
				"required": ["externalCustomerId", "items"],
				"additionalProperties": false
			},
			"PaymentRequestResponse": {
				"type": "object",
				"properties": {
					"createdAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"expiresAt": {
						"anyOf": [
							{
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							{ "type": "null" }
						],
						"description": "When the most recent payment link stops working. Null once the request is no longer open."
					},
					"externalCustomerId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$",
						"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
					},
					"externalPaymentRequestId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"items": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"amount": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "string",
											"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
										},
										"currency": { "type": "string", "const": "EUR" }
									},
									"required": ["amount", "currency"],
									"additionalProperties": false,
									"description": "The exact current working balance of this Receivable. A request cannot pay part of a Receivable, more than it, or a different Receivable."
								},
								"externalReceivableId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$"
								}
							},
							"required": ["amount", "externalReceivableId"],
							"additionalProperties": false
						}
					},
					"paymentUrl": {
						"anyOf": [
							{ "type": "string", "format": "uri" },
							{ "type": "null" }
						],
						"description": "Hosted payment page on the Client's verified payment domain. It is a secret: send it only to the paying Customer. Returned by create and by an exact retry while the request is open; null on reads."
					},
					"revision": {
						"type": "integer",
						"minimum": 1,
						"maximum": 9007199254740991,
						"description": "Increases each time the request's status changes. It matches the revision in change-feed events."
					},
					"status": {
						"type": "string",
						"enum": [
							"open",
							"payment_in_progress",
							"under_review",
							"paid",
							"expired",
							"replaced",
							"cancelled"
						],
						"description": "paid is set only after the payment provider's verified confirmation. Returning from the hosted page never changes this status."
					},
					"totalAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					}
				},
				"required": [
					"createdAt",
					"expiresAt",
					"externalCustomerId",
					"externalPaymentRequestId",
					"items",
					"paymentUrl",
					"revision",
					"status",
					"totalAmount"
				],
				"additionalProperties": false
			},
			"ReceiptDelivery": {
				"type": "object",
				"properties": {},
				"additionalProperties": false,
				"description": "Asks PayPathIQ to deliver the receipt of this confirmed Payment through the connection's verified route. The body carries no fields: the receipt content is always derived from the confirmed Payment and its allocations."
			},
			"ReceiptDeliveryResponse": {
				"type": "object",
				"properties": {
					"acknowledgement": {
						"type": "object",
						"properties": {
							"allocatedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"matchedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"status": {
								"type": "string",
								"enum": ["pending", "partial", "acknowledged"]
							},
							"unmatchedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							}
						},
						"required": [
							"allocatedAmount",
							"matchedAmount",
							"status",
							"unmatchedAmount"
						],
						"additionalProperties": false,
						"description": "Accounting acknowledgement, from Source receipt lines matched by payment reconciliations. It is independent of delivery: a successful submission or an exported file leaves it pending until exact receipt lines arrive."
					},
					"capability": {
						"type": "object",
						"properties": {
							"disabledReason": {
								"type": "string",
								"enum": ["delivery_owned_by_partner", "no_verified_route"]
							},
							"route": {
								"type": "string",
								"enum": [
									"blockman_receipt_posting",
									"blockman_transaction_csv",
									"xero_payment_write"
								]
							},
							"state": { "type": "string", "enum": ["enabled", "disabled"] },
							"unverifiedRoutes": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"missingProof": {
											"type": "string",
											"minLength": 1,
											"maxLength": 300
										},
										"route": {
											"type": "string",
											"enum": [
												"blockman_receipt_posting",
												"blockman_transaction_csv",
												"xero_payment_write"
											]
										}
									},
									"required": ["missingProof", "route"],
									"additionalProperties": false
								},
								"description": "Routes that are known but disabled because no vendor contract has been verified. PayPathIQ never claims automatic write-back through them."
							}
						},
						"required": ["state", "unverifiedRoutes"],
						"additionalProperties": false,
						"description": "What PayPathIQ can deliver for this connection today. disabled means no delivery attempt will be made."
					},
					"delivery": {
						"type": "object",
						"properties": {
							"attemptCount": {
								"type": "integer",
								"minimum": 0,
								"maximum": 9007199254740991
							},
							"attempts": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"attemptNumber": {
											"type": "integer",
											"minimum": 1,
											"maximum": 9007199254740991
										},
										"attemptedAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"evidenceReference": {
											"type": "string",
											"minLength": 1,
											"maxLength": 200
										},
										"failureCode": {
											"type": "string",
											"enum": [
												"vendor_rejected",
												"vendor_unavailable",
												"credentials_invalid"
											]
										},
										"outcome": {
											"type": "string",
											"enum": ["submitted", "rejected", "ambiguous"]
										}
									},
									"required": ["attemptNumber", "attemptedAt", "outcome"],
									"additionalProperties": false
								}
							},
							"reference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 64,
								"description": "Stable reference sent on every attempt for this Payment. A vendor deduplicates on it, so a retry never creates a second posting."
							},
							"revision": {
								"type": "integer",
								"minimum": 1,
								"maximum": 9007199254740991
							},
							"route": {
								"type": "string",
								"enum": [
									"blockman_receipt_posting",
									"blockman_transaction_csv",
									"xero_payment_write"
								]
							},
							"status": {
								"type": "string",
								"enum": ["pending", "submitted", "failed", "ambiguous"],
								"description": "submitted: the vendor accepted the delivery, which is not accounting acknowledgement. failed: rejected; safe to retry. ambiguous: the outcome is unknown; no retry is made until exact receipt evidence acknowledges the Payment."
							}
						},
						"required": [
							"attemptCount",
							"attempts",
							"reference",
							"revision",
							"route",
							"status"
						],
						"additionalProperties": false
					},
					"deliveryOwner": {
						"type": "string",
						"enum": ["partner", "paypathiq"]
					},
					"externalPaymentRequestId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					}
				},
				"required": [
					"acknowledgement",
					"capability",
					"deliveryOwner",
					"externalPaymentRequestId"
				],
				"additionalProperties": false
			},
			"PaymentObservationResponse": {
				"oneOf": [
					{
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"method": {
								"type": "string",
								"enum": [
									"bank_transfer",
									"direct_debit",
									"card",
									"cash",
									"cheque",
									"unknown"
								]
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"allocations": {
								"maxItems": 25,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"externalReceivableId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										}
									},
									"required": ["amount", "externalReceivableId"],
									"additionalProperties": false
								}
							},
							"externalCustomerId": {
								"description": "The paying Customer, when known. Required for a Client-approved allocation rule to apply; unapplied funds are associated with this Customer.",
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"type": { "type": "string", "const": "payment" },
							"acceptedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"externalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"allocationBasis": {
								"type": "string",
								"enum": ["explicit", "rule", "unapplied"]
							},
							"unappliedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							}
						},
						"required": [
							"amount",
							"effectiveAt",
							"method",
							"sourceReference",
							"allocations",
							"type",
							"acceptedAt",
							"externalPaymentObservationId",
							"allocationBasis",
							"unappliedAmount"
						],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"method": {
								"type": "string",
								"enum": [
									"bank_transfer",
									"direct_debit",
									"card",
									"cash",
									"cheque",
									"unknown"
								]
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"allocations": {
								"maxItems": 25,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"externalReceivableId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										},
										"resultingRecoverableAmount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										}
									},
									"required": [
										"amount",
										"externalReceivableId",
										"resultingRecoverableAmount"
									],
									"additionalProperties": false
								}
							},
							"relatedExternalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"type": { "type": "string", "const": "refund" },
							"acceptedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"externalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"unappliedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							}
						},
						"required": [
							"amount",
							"effectiveAt",
							"method",
							"sourceReference",
							"allocations",
							"relatedExternalPaymentObservationId",
							"type",
							"acceptedAt",
							"externalPaymentObservationId",
							"unappliedAmount"
						],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"amount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"effectiveAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"method": {
								"type": "string",
								"enum": [
									"bank_transfer",
									"direct_debit",
									"card",
									"cash",
									"cheque",
									"unknown"
								]
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"allocations": {
								"maxItems": 25,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"amount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										},
										"externalReceivableId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$"
										},
										"resultingRecoverableAmount": {
											"type": "object",
											"properties": {
												"amount": {
													"type": "string",
													"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
												},
												"currency": { "type": "string", "const": "EUR" }
											},
											"required": ["amount", "currency"],
											"additionalProperties": false
										}
									},
									"required": [
										"amount",
										"externalReceivableId",
										"resultingRecoverableAmount"
									],
									"additionalProperties": false
								}
							},
							"relatedExternalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"type": { "type": "string", "const": "reversal" },
							"acceptedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							"externalPaymentObservationId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"unappliedAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							}
						},
						"required": [
							"amount",
							"effectiveAt",
							"method",
							"sourceReference",
							"allocations",
							"relatedExternalPaymentObservationId",
							"type",
							"acceptedAt",
							"externalPaymentObservationId",
							"unappliedAmount"
						],
						"additionalProperties": false
					}
				]
			},
			"Problem": {
				"type": "object",
				"properties": {
					"detail": { "type": "string" },
					"errors": {
						"maxItems": 20,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"code": { "type": "string" },
								"detail": { "type": "string" },
								"pointer": { "type": "string" }
							},
							"required": ["code", "detail", "pointer"],
							"additionalProperties": false
						}
					},
					"requestId": {
						"type": "string",
						"format": "uuid",
						"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
					},
					"status": { "type": "integer", "minimum": 400, "maximum": 599 },
					"title": { "type": "string" },
					"type": { "type": "string", "format": "uri" }
				},
				"required": ["detail", "requestId", "status", "title", "type"],
				"additionalProperties": false
			},
			"Receivable": {
				"oneOf": [
					{
						"type": "object",
						"properties": {
							"balanceBreakdown": {
								"type": "object",
								"properties": {
									"costs": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"fees": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"interest": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"principal": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["costs", "fees", "interest", "principal"],
								"additionalProperties": false,
								"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
							},
							"creditUnion": {
								"type": "object",
								"properties": {
									"arrearsAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"contractualInstalment": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"frequency": {
												"type": "string",
												"enum": [
													"weekly",
													"fortnightly",
													"monthly",
													"quarterly",
													"annual"
												]
											}
										},
										"required": ["amount", "frequency"],
										"additionalProperties": false
									},
									"defaultDate": {
										"type": "string",
										"format": "date",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
									},
									"loanAccountReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									},
									"loanType": {
										"type": "string",
										"enum": [
											"personal_loan",
											"mortgage",
											"overdraft",
											"credit_card",
											"business_loan",
											"other"
										]
									},
									"totalOutstandingAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["loanAccountReference", "loanType"],
								"additionalProperties": false
							},
							"propertyManagement": { "not": {} },
							"financialType": {
								"type": "string",
								"enum": [
									"loan_instalment",
									"accelerated_balance",
									"loan_balance"
								]
							},
							"sourceRevision": {
								"type": "integer",
								"exclusiveMinimum": 0,
								"maximum": 9007199254740991
							},
							"dueDate": {
								"type": "string",
								"format": "date",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
							},
							"receivableSafetyAssertions": {
								"maxItems": 3,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"effectiveAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"state": {
											"type": "string",
											"enum": ["active", "cleared"]
										},
										"type": {
											"type": "string",
											"enum": ["dispute", "complaint", "statute_barred"]
										}
									},
									"required": ["effectiveAt", "state", "type"],
									"additionalProperties": false
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							},
							"recoverableAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"responsibleCustomers": {
								"minItems": 1,
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"externalCustomerId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
										},
										"role": {
											"type": "string",
											"enum": ["primary", "joint", "guarantor"]
										}
									},
									"required": ["externalCustomerId", "role"],
									"additionalProperties": false
								},
								"description": "Customer identifiers must be unique and exactly one role must be primary."
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							}
						},
						"required": [
							"creditUnion",
							"financialType",
							"sourceRevision",
							"dueDate",
							"recoverableAmount",
							"responsibleCustomers",
							"sourceReference"
						],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"balanceBreakdown": {
								"type": "object",
								"properties": {
									"costs": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"fees": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"interest": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"principal": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["costs", "fees", "interest", "principal"],
								"additionalProperties": false,
								"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
							},
							"creditUnion": { "not": {} },
							"propertyManagement": {
								"type": "object",
								"properties": {
									"version": { "type": "string", "const": "v1" },
									"developmentReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									},
									"unitReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									},
									"demandReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									}
								},
								"required": [
									"version",
									"developmentReference",
									"unitReference",
									"demandReference"
								],
								"additionalProperties": false
							},
							"financialType": {
								"type": "string",
								"const": "service_charge_demand"
							},
							"sourceRevision": {
								"type": "integer",
								"exclusiveMinimum": 0,
								"maximum": 9007199254740991
							},
							"dueDate": {
								"type": "string",
								"format": "date",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
							},
							"receivableSafetyAssertions": {
								"maxItems": 3,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"effectiveAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"state": {
											"type": "string",
											"enum": ["active", "cleared"]
										},
										"type": {
											"type": "string",
											"enum": ["dispute", "complaint", "statute_barred"]
										}
									},
									"required": ["effectiveAt", "state", "type"],
									"additionalProperties": false
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							},
							"recoverableAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"responsibleCustomers": {
								"minItems": 1,
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"externalCustomerId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
										},
										"role": {
											"type": "string",
											"enum": ["primary", "joint", "guarantor"]
										}
									},
									"required": ["externalCustomerId", "role"],
									"additionalProperties": false
								},
								"description": "Customer identifiers must be unique and exactly one role must be primary."
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							}
						},
						"required": [
							"propertyManagement",
							"financialType",
							"sourceRevision",
							"dueDate",
							"recoverableAmount",
							"responsibleCustomers",
							"sourceReference"
						],
						"additionalProperties": false
					}
				],
				"description": "Each financial type requires exactly its industry context. The balance breakdown must sum exactly to recoverableAmount."
			},
			"ReceivableMergePatch": {
				"type": "object",
				"properties": {
					"balanceBreakdown": {
						"anyOf": [
							{
								"type": "object",
								"properties": {
									"costs": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"fees": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"interest": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"principal": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["costs", "fees", "interest", "principal"],
								"additionalProperties": false,
								"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
							},
							{ "type": "null" }
						]
					},
					"creditUnion": {
						"type": "object",
						"properties": {
							"arrearsAmount": {
								"anyOf": [
									{
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									{ "type": "null" }
								]
							},
							"contractualInstalment": {
								"anyOf": [
									{
										"type": "object",
										"properties": {
											"amount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"frequency": {
												"type": "string",
												"enum": [
													"weekly",
													"fortnightly",
													"monthly",
													"quarterly",
													"annual"
												]
											}
										},
										"required": ["amount", "frequency"],
										"additionalProperties": false
									},
									{ "type": "null" }
								]
							},
							"defaultDate": {
								"anyOf": [
									{
										"type": "string",
										"format": "date",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
									},
									{ "type": "null" }
								]
							},
							"loanAccountReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"loanType": {
								"type": "string",
								"enum": [
									"personal_loan",
									"mortgage",
									"overdraft",
									"credit_card",
									"business_loan",
									"other"
								]
							},
							"totalOutstandingAmount": {
								"anyOf": [
									{
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									{ "type": "null" }
								]
							}
						},
						"additionalProperties": false
					},
					"propertyManagement": {
						"type": "object",
						"properties": {
							"version": { "type": "string", "const": "v1" },
							"developmentReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"unitReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"demandReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							}
						},
						"additionalProperties": false
					},
					"financialType": {
						"type": "string",
						"enum": [
							"loan_instalment",
							"accelerated_balance",
							"loan_balance",
							"service_charge_demand"
						]
					},
					"sourceRevision": {
						"type": "integer",
						"exclusiveMinimum": 0,
						"maximum": 9007199254740991
					},
					"dueDate": {
						"type": "string",
						"format": "date",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
					},
					"receivableSafetyAssertions": {
						"maxItems": 3,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"effectiveAt": {
									"type": "string",
									"format": "date-time",
									"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
								},
								"state": { "type": "string", "enum": ["active", "cleared"] },
								"type": {
									"type": "string",
									"enum": ["dispute", "complaint", "statute_barred"]
								}
							},
							"required": ["effectiveAt", "state", "type"],
							"additionalProperties": false
						},
						"description": "At most one assertion per type; ordering is semantically irrelevant."
					},
					"recoverableAmount": {
						"type": "object",
						"properties": {
							"amount": {
								"type": "string",
								"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
							},
							"currency": { "type": "string", "const": "EUR" }
						},
						"required": ["amount", "currency"],
						"additionalProperties": false
					},
					"responsibleCustomers": {
						"minItems": 1,
						"maxItems": 8,
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"externalCustomerId": {
									"type": "string",
									"pattern": "^[A-Za-z0-9_-]{1,128}$",
									"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
								},
								"role": {
									"type": "string",
									"enum": ["primary", "joint", "guarantor"]
								}
							},
							"required": ["externalCustomerId", "role"],
							"additionalProperties": false
						},
						"description": "Customer identifiers must be unique and exactly one role must be primary."
					},
					"sourceReference": {
						"type": "string",
						"minLength": 1,
						"maxLength": 200
					}
				},
				"required": ["sourceRevision"],
				"additionalProperties": false
			},
			"ReceivableResponse": {
				"oneOf": [
					{
						"type": "object",
						"properties": {
							"balanceBreakdown": {
								"type": "object",
								"properties": {
									"costs": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"fees": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"interest": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"principal": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["costs", "fees", "interest", "principal"],
								"additionalProperties": false,
								"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
							},
							"creditUnion": {
								"type": "object",
								"properties": {
									"arrearsAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"contractualInstalment": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											},
											"frequency": {
												"type": "string",
												"enum": [
													"weekly",
													"fortnightly",
													"monthly",
													"quarterly",
													"annual"
												]
											}
										},
										"required": ["amount", "frequency"],
										"additionalProperties": false
									},
									"defaultDate": {
										"type": "string",
										"format": "date",
										"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
									},
									"loanAccountReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									},
									"loanType": {
										"type": "string",
										"enum": [
											"personal_loan",
											"mortgage",
											"overdraft",
											"credit_card",
											"business_loan",
											"other"
										]
									},
									"totalOutstandingAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["loanAccountReference", "loanType"],
								"additionalProperties": false
							},
							"propertyManagement": { "not": {} },
							"financialType": {
								"type": "string",
								"enum": [
									"loan_instalment",
									"accelerated_balance",
									"loan_balance"
								]
							},
							"sourceRevision": {
								"type": "integer",
								"exclusiveMinimum": 0,
								"maximum": 9007199254740991
							},
							"dueDate": {
								"type": "string",
								"format": "date",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
							},
							"receivableSafetyAssertions": {
								"maxItems": 3,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"effectiveAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"state": {
											"type": "string",
											"enum": ["active", "cleared"]
										},
										"type": {
											"type": "string",
											"enum": ["dispute", "complaint", "statute_barred"]
										}
									},
									"required": ["effectiveAt", "state", "type"],
									"additionalProperties": false
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							},
							"recoverableAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"responsibleCustomers": {
								"minItems": 1,
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"externalCustomerId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
										},
										"role": {
											"type": "string",
											"enum": ["primary", "joint", "guarantor"]
										}
									},
									"required": ["externalCustomerId", "role"],
									"additionalProperties": false
								},
								"description": "Customer identifiers must be unique and exactly one role must be primary."
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"financialPosition": {
								"type": "object",
								"properties": {
									"confirmedUnreconciledAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"sourceAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"receiptAcknowledgedAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false,
										"description": "The part of confirmed Payments that Source receipt lines have been matched against for this Receivable. It reduces confirmedUnreconciledAmount without changing the working amount."
									},
									"receiptDifference": {
										"description": "Present while a receipt line for this Receivable did not fit its allocated Payment amount and is unresolved. Affected recovery and Payment actions are held; both figures are preserved until matching evidence or an authorized correction resolves it.",
										"type": "object",
										"properties": {
											"externalReconciliationId": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											},
											"since": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											}
										},
										"required": ["externalReconciliationId", "since"],
										"additionalProperties": false
									},
									"missingFromCompleteBook": {
										"description": "Present while a verified complete book omitted this Receivable and it has not been resolved. Affected recovery and Payment actions are held; balance, status and history are unchanged. Cleared by a later verified complete book that contains it, an authorized source close, or an authorized correction to a zero balance, and never resumes recovery by itself.",
										"type": "object",
										"properties": {
											"externalCompletionId": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											},
											"since": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											}
										},
										"required": ["externalCompletionId", "since"],
										"additionalProperties": false
									},
									"sourcePosition": {
										"description": "The latest ordered balance snapshot that covered this Receivable. Absent until one has.",
										"type": "object",
										"properties": {
											"asOf": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"position": {
												"type": "integer",
												"exclusiveMinimum": 0,
												"maximum": 9007199254740991
											}
										},
										"required": ["asOf", "position"],
										"additionalProperties": false
									},
									"uncertainty": {
										"description": "Present while the Source and working positions cannot be safely reconciled. Affected recovery and Payment actions are held. Both figures are preserved; only matching evidence or an authorized correction resolves it.",
										"type": "object",
										"properties": {
											"reason": {
												"type": "string",
												"enum": [
													"pending_payment_overlap_unknown",
													"source_balance_mismatch"
												]
											},
											"since": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"snapshotAmount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											}
										},
										"required": ["reason", "since", "snapshotAmount"],
										"additionalProperties": false
									},
									"workingAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": [
									"confirmedUnreconciledAmount",
									"sourceAmount",
									"receiptAcknowledgedAmount",
									"workingAmount"
								],
								"additionalProperties": false,
								"description": "Present on reads. sourceAmount is the declared accounting authority's position, workingAmount is the safe collection balance after confirmed allocated Payments, and confirmedUnreconciledAmount is the allocated confirmed amount the Source has not yet acknowledged. Unapplied funds appear in none of them."
							},
							"externalReceivableId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"status": {
								"type": "string",
								"enum": ["active", "paused", "closed"]
							},
							"updatedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							}
						},
						"required": [
							"creditUnion",
							"financialType",
							"sourceRevision",
							"dueDate",
							"recoverableAmount",
							"responsibleCustomers",
							"sourceReference",
							"externalReceivableId",
							"status",
							"updatedAt"
						],
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"balanceBreakdown": {
								"type": "object",
								"properties": {
									"costs": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"fees": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"interest": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"principal": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": ["costs", "fees", "interest", "principal"],
								"additionalProperties": false,
								"description": "All four amounts are required when a breakdown is supplied; use 0.00 where needed."
							},
							"creditUnion": { "not": {} },
							"propertyManagement": {
								"type": "object",
								"properties": {
									"version": { "type": "string", "const": "v1" },
									"developmentReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									},
									"unitReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									},
									"demandReference": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200
									}
								},
								"required": [
									"version",
									"developmentReference",
									"unitReference",
									"demandReference"
								],
								"additionalProperties": false
							},
							"financialType": {
								"type": "string",
								"const": "service_charge_demand"
							},
							"sourceRevision": {
								"type": "integer",
								"exclusiveMinimum": 0,
								"maximum": 9007199254740991
							},
							"dueDate": {
								"type": "string",
								"format": "date",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
							},
							"receivableSafetyAssertions": {
								"maxItems": 3,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"effectiveAt": {
											"type": "string",
											"format": "date-time",
											"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
										},
										"state": {
											"type": "string",
											"enum": ["active", "cleared"]
										},
										"type": {
											"type": "string",
											"enum": ["dispute", "complaint", "statute_barred"]
										}
									},
									"required": ["effectiveAt", "state", "type"],
									"additionalProperties": false
								},
								"description": "At most one assertion per type; ordering is semantically irrelevant."
							},
							"recoverableAmount": {
								"type": "object",
								"properties": {
									"amount": {
										"type": "string",
										"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
									},
									"currency": { "type": "string", "const": "EUR" }
								},
								"required": ["amount", "currency"],
								"additionalProperties": false
							},
							"responsibleCustomers": {
								"minItems": 1,
								"maxItems": 8,
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"externalCustomerId": {
											"type": "string",
											"pattern": "^[A-Za-z0-9_-]{1,128}$",
											"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
										},
										"role": {
											"type": "string",
											"enum": ["primary", "joint", "guarantor"]
										}
									},
									"required": ["externalCustomerId", "role"],
									"additionalProperties": false
								},
								"description": "Customer identifiers must be unique and exactly one role must be primary."
							},
							"sourceReference": {
								"type": "string",
								"minLength": 1,
								"maxLength": 200
							},
							"financialPosition": {
								"type": "object",
								"properties": {
									"confirmedUnreconciledAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"sourceAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									},
									"receiptAcknowledgedAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false,
										"description": "The part of confirmed Payments that Source receipt lines have been matched against for this Receivable. It reduces confirmedUnreconciledAmount without changing the working amount."
									},
									"receiptDifference": {
										"description": "Present while a receipt line for this Receivable did not fit its allocated Payment amount and is unresolved. Affected recovery and Payment actions are held; both figures are preserved until matching evidence or an authorized correction resolves it.",
										"type": "object",
										"properties": {
											"externalReconciliationId": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											},
											"since": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											}
										},
										"required": ["externalReconciliationId", "since"],
										"additionalProperties": false
									},
									"missingFromCompleteBook": {
										"description": "Present while a verified complete book omitted this Receivable and it has not been resolved. Affected recovery and Payment actions are held; balance, status and history are unchanged. Cleared by a later verified complete book that contains it, an authorized source close, or an authorized correction to a zero balance, and never resumes recovery by itself.",
										"type": "object",
										"properties": {
											"externalCompletionId": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,128}$"
											},
											"since": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											}
										},
										"required": ["externalCompletionId", "since"],
										"additionalProperties": false
									},
									"sourcePosition": {
										"description": "The latest ordered balance snapshot that covered this Receivable. Absent until one has.",
										"type": "object",
										"properties": {
											"asOf": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"position": {
												"type": "integer",
												"exclusiveMinimum": 0,
												"maximum": 9007199254740991
											}
										},
										"required": ["asOf", "position"],
										"additionalProperties": false
									},
									"uncertainty": {
										"description": "Present while the Source and working positions cannot be safely reconciled. Affected recovery and Payment actions are held. Both figures are preserved; only matching evidence or an authorized correction resolves it.",
										"type": "object",
										"properties": {
											"reason": {
												"type": "string",
												"enum": [
													"pending_payment_overlap_unknown",
													"source_balance_mismatch"
												]
											},
											"since": {
												"type": "string",
												"format": "date-time",
												"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
											},
											"snapshotAmount": {
												"type": "object",
												"properties": {
													"amount": {
														"type": "string",
														"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
													},
													"currency": { "type": "string", "const": "EUR" }
												},
												"required": ["amount", "currency"],
												"additionalProperties": false
											}
										},
										"required": ["reason", "since", "snapshotAmount"],
										"additionalProperties": false
									},
									"workingAmount": {
										"type": "object",
										"properties": {
											"amount": {
												"type": "string",
												"pattern": "^(0|[1-9]\\d{0,13})\\.\\d{2}$"
											},
											"currency": { "type": "string", "const": "EUR" }
										},
										"required": ["amount", "currency"],
										"additionalProperties": false
									}
								},
								"required": [
									"confirmedUnreconciledAmount",
									"sourceAmount",
									"receiptAcknowledgedAmount",
									"workingAmount"
								],
								"additionalProperties": false,
								"description": "Present on reads. sourceAmount is the declared accounting authority's position, workingAmount is the safe collection balance after confirmed allocated Payments, and confirmedUnreconciledAmount is the allocated confirmed amount the Source has not yet acknowledged. Unapplied funds appear in none of them."
							},
							"externalReceivableId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							},
							"status": {
								"type": "string",
								"enum": ["active", "paused", "closed"]
							},
							"updatedAt": {
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							}
						},
						"required": [
							"propertyManagement",
							"financialType",
							"sourceRevision",
							"dueDate",
							"recoverableAmount",
							"responsibleCustomers",
							"sourceReference",
							"externalReceivableId",
							"status",
							"updatedAt"
						],
						"additionalProperties": false
					}
				],
				"description": "Each financial type requires exactly its industry context. The balance breakdown must sum exactly to recoverableAmount."
			},
			"ReceivableSafetyAssertion": {
				"type": "object",
				"properties": {
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"state": { "type": "string", "enum": ["active", "cleared"] },
					"type": {
						"type": "string",
						"enum": ["dispute", "complaint", "statute_barred"]
					}
				},
				"required": ["effectiveAt", "state", "type"],
				"additionalProperties": false
			},
			"ReopenReceivableCommand": {
				"type": "object",
				"properties": {
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					}
				},
				"required": ["effectiveAt"],
				"additionalProperties": false
			},
			"ResponsibleCustomer": {
				"type": "object",
				"properties": {
					"externalCustomerId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$",
						"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is not a PayPathIQ ID, member number, loan or account number, or contact detail. Keep it stable when Customer details change."
					},
					"role": {
						"type": "string",
						"enum": ["primary", "joint", "guarantor"]
					}
				},
				"required": ["externalCustomerId", "role"],
				"additionalProperties": false
			},
			"SourceFreshnessResponse": {
				"type": "object",
				"properties": {
					"state": {
						"type": "string",
						"enum": ["not_configured", "fresh", "stale"],
						"description": "not_configured means this connection has no approved freshness limit, so no freshness hold applies."
					},
					"limitSeconds": {
						"anyOf": [
							{ "type": "integer", "minimum": 60, "maximum": 2678400 },
							{ "type": "null" }
						],
						"description": "Approved maximum age of the latest accepted source evidence, derived from this connection's agreed delivery cadence."
					},
					"basis": {
						"anyOf": [
							{ "type": "string", "minLength": 1, "maxLength": 200 },
							{ "type": "null" }
						],
						"description": "The approved business meaning of the limit, for example the agreed cadence plus tolerance."
					},
					"lastEvidenceAt": {
						"anyOf": [
							{
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							{ "type": "null" }
						],
						"description": "When PayPathIQ last committed an accepted source write from this connection."
					},
					"staleAt": {
						"anyOf": [
							{
								"type": "string",
								"format": "date-time",
								"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
							},
							{ "type": "null" }
						],
						"description": "When the latest evidence exceeds the limit; null when no evidence has been accepted or no limit is configured."
					},
					"evaluatedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"recoveryHeld": {
						"type": "boolean",
						"description": "True while recovery actions for this connection's Receivables are held."
					},
					"paymentInitiationHeld": {
						"type": "boolean",
						"description": "True while new payment initiation for this connection's Receivables is held. Confirmed provider results, source updates and reconciliation evidence are still accepted."
					},
					"heldReason": {
						"anyOf": [
							{ "type": "string", "const": "source_stale" },
							{ "type": "null" }
						]
					}
				},
				"required": [
					"state",
					"limitSeconds",
					"basis",
					"lastEvidenceAt",
					"staleAt",
					"evaluatedAt",
					"recoveryHeld",
					"paymentInitiationHeld",
					"heldReason"
				],
				"additionalProperties": false,
				"description": "Freshness of this connection's accepted source evidence at evaluation time. Fresh evidence clears only the freshness hold; it never clears Disputes, source restrictions or other protections."
			},
			"RecoveryInstruction": {
				"type": "object",
				"properties": {
					"scope": {
						"type": "object",
						"properties": {
							"type": { "type": "string", "const": "receivable" },
							"externalReceivableId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							}
						},
						"required": ["type", "externalReceivableId"],
						"additionalProperties": false,
						"description": "The Receivable this instruction governs."
					},
					"state": {
						"type": "string",
						"enum": ["authorized", "withdrawn"],
						"description": "authorized lets PayPathIQ begin recovery for the Receivable, still subject to every current protection. withdrawn holds recovery again."
					},
					"revision": {
						"type": "integer",
						"minimum": 1,
						"maximum": 2147483647,
						"description": "Starts at 1 and increases by exactly 1 with each changed instruction. Repeat the same revision and content to retry safely."
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
						"description": "When the Source issued this instruction."
					}
				},
				"required": ["scope", "state", "revision", "effectiveAt"],
				"additionalProperties": false,
				"description": "A scoped, revisioned recovery instruction. It is separate from financial writes and requires the recovery_instructions:write scope."
			},
			"RecoveryInstructionResponse": {
				"type": "object",
				"properties": {
					"externalInstructionId": {
						"type": "string",
						"pattern": "^[A-Za-z0-9_-]{1,128}$"
					},
					"scope": {
						"type": "object",
						"properties": {
							"type": { "type": "string", "const": "receivable" },
							"externalReceivableId": {
								"type": "string",
								"pattern": "^[A-Za-z0-9_-]{1,128}$"
							}
						},
						"required": ["type", "externalReceivableId"],
						"additionalProperties": false,
						"description": "The Receivable this instruction governs."
					},
					"state": {
						"type": "string",
						"enum": ["authorized", "withdrawn", "suspended"],
						"description": "suspended means PayPathIQ withdrew the authority because the Source raised a restriction or Dispute after the instruction. Send a new revision to authorize again once the Source has cleared it."
					},
					"revision": {
						"type": "integer",
						"minimum": 1,
						"maximum": 9007199254740991
					},
					"effectiveAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"recordedAt": {
						"type": "string",
						"format": "date-time",
						"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
					},
					"recoveryEntryMode": {
						"type": "string",
						"const": "explicit_instruction"
					},
					"recoveryHeld": {
						"type": "boolean",
						"description": "True while any hold prevents recovery for the Receivable right now."
					},
					"holds": {
						"type": "array",
						"items": {
							"type": "string",
							"enum": [
								"recovery_not_authorized",
								"collection_not_enabled",
								"source_restriction",
								"dispute",
								"source_stale",
								"other_protection",
								"reconciliation_hold"
							]
						},
						"description": "Closed categories of the holds currently preventing recovery. An authorized instruction never clears any of them."
					}
				},
				"required": [
					"externalInstructionId",
					"scope",
					"state",
					"revision",
					"effectiveAt",
					"recordedAt",
					"recoveryEntryMode",
					"recoveryHeld",
					"holds"
				],
				"additionalProperties": false,
				"description": "The accepted instruction and whether recovery for its Receivable is currently held."
			}
		},
		"securitySchemes": {
			"BearerAuth": {
				"bearerFormat": "ppiq_test_<keyId>_<secret> or ppiq_live_<keyId>_<secret>",
				"description": "Integration-owned environment-specific API key. Never paste a production key into documentation tools.",
				"scheme": "bearer",
				"type": "http"
			}
		}
	},
	"info": {
		"description": "Send Customers, Receivables, and Payment observations and related financial evidence from your source system to PayPathIQ, one record at a time or as bounded asynchronous batches, and read back changes. Every operation listed here is implemented; capabilities that are not implemented are not listed. Start in sandbox with a sandbox key and synthetic data. Every error type links to a page at https://docs.paypathiq.com/problems/{code}.",
		"title": "PayPathIQ Inbound Receivables API",
		"version": "1.0.0"
	},
	"openapi": "3.1.0",
	"paths": {
		"/v1/clients/{clientCode}/balance-snapshots/{externalSnapshotId}": {
			"get": {
				"description": "Requires receivables:read. Returns one accepted snapshot with its per-Receivable outcomes.",
				"operationId": "getBalanceSnapshot",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this immutable snapshot.",
						"in": "path",
						"name": "externalSnapshotId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T02:00:05.000Z",
									"asOf": "2026-10-15T02:00:00Z",
									"balances": [
										{
											"externalReceivableId": "REC_123",
											"outcome": "applied",
											"recoverableAmount": {
												"amount": "1150.00",
												"currency": "EUR"
											},
											"sourceRevision": 2
										}
									],
									"externalSnapshotId": "SNAP_41",
									"feedMode": "snapshot_only",
									"sourcePosition": 41
								},
								"schema": {
									"$ref": "#/components/schemas/BalanceSnapshotResponse"
								}
							}
						},
						"description": "Accepted snapshot.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No evidence exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No evidence exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No evidence exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a balance snapshot",
				"tags": ["Balance snapshots"]
			},
			"put": {
				"description": "Requires receivables:write. Accepts ordered Source balances for up to 100 Receivables, atomically; omitted Receivables are unaffected. In snapshot-only mode a newer authoritative balance becomes the Source position without being labelled a Payment or Credit. In transaction mode a snapshot is a checkpoint that applies no financial event twice; a difference is held, with both figures preserved. Confirmed Payments the Source has not acknowledged are overlaid only when confirmed after asOf; otherwise affected recovery and Payment actions are held. An identical retry returns 200 and changes nothing.",
				"operationId": "putBalanceSnapshot",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this immutable snapshot.",
						"in": "path",
						"name": "externalSnapshotId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"asOf": "2026-10-15T02:00:00Z",
								"balances": [
									{
										"externalReceivableId": "REC_123",
										"recoverableAmount": {
											"amount": "1150.00",
											"currency": "EUR"
										},
										"sourceRevision": 2
									}
								],
								"sourcePosition": 41
							},
							"schema": { "$ref": "#/components/schemas/BalanceSnapshot" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T02:00:05.000Z",
									"asOf": "2026-10-15T02:00:00Z",
									"balances": [
										{
											"externalReceivableId": "REC_123",
											"outcome": "applied",
											"recoverableAmount": {
												"amount": "1150.00",
												"currency": "EUR"
											},
											"sourceRevision": 2
										}
									],
									"externalSnapshotId": "SNAP_41",
									"feedMode": "snapshot_only",
									"sourcePosition": 41
								},
								"schema": {
									"$ref": "#/components/schemas/BalanceSnapshotResponse"
								}
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T02:00:05.000Z",
									"asOf": "2026-10-15T02:00:00Z",
									"balances": [
										{
											"externalReceivableId": "REC_123",
											"outcome": "applied",
											"recoverableAmount": {
												"amount": "1150.00",
												"currency": "EUR"
											},
											"sourceRevision": 2
										}
									],
									"externalSnapshotId": "SNAP_41",
									"feedMode": "snapshot_only",
									"sourcePosition": 41
								},
								"schema": {
									"$ref": "#/components/schemas/BalanceSnapshotResponse"
								}
							}
						},
						"description": "Snapshot and balance effects committed atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"source_position_conflict": {
										"value": {
											"detail": "The position is not higher than every accepted position, or asOf is earlier than the latest snapshot.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The position is not higher than every accepted position, or asOf is earlier than the latest snapshot.",
											"type": "https://docs.paypathiq.com/problems/source_position_conflict"
										}
									},
									"source_revision_conflict": {
										"value": {
											"detail": "A line carries an older revision than accepted, or contradicts the accepted balance at the same revision.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A line carries an older revision than accepted, or contradicts the accepted balance at the same revision.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "Identity already has different immutable evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Identity already has different immutable evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "Every Receivable must already exist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Every Receivable must already exist.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The position is not higher than every accepted position, or asOf is earlier than the latest snapshot. A line carries an older revision than accepted, or contradicts the accepted balance at the same revision. Identity already has different immutable evidence. Every Receivable must already exist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Record an ordered balance snapshot",
				"tags": ["Balance snapshots"]
			}
		},
		"/v1/clients/{clientCode}/batches/{externalBatchId}": {
			"get": {
				"description": "Requires the write scope of every kind in the batch. Returns progress and the exact outcome of every record. status queued or running means work is outstanding; poll until it is succeeded, partially_succeeded or failed.",
				"operationId": "getBatch",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this batch submission. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalBatchId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"externalBatchId": "BATCH_2026_10_15",
									"status": "partially_succeeded",
									"bookCompleteness": "not_declared",
									"submittedAt": "2026-10-15T02:00:00.000Z",
									"completedAt": "2026-10-15T02:00:07.000Z",
									"counts": {
										"total": 3,
										"pending": 0,
										"succeeded": 1,
										"failed": 1,
										"dependencyFailed": 1
									},
									"records": [
										{
											"position": 1,
											"recordId": "r1",
											"kind": "customer",
											"externalId": "CUS_123",
											"status": "succeeded",
											"httpStatus": 201
										},
										{
											"position": 2,
											"recordId": "r2",
											"kind": "receivable",
											"externalId": "REC_123",
											"status": "failed",
											"httpStatus": 422,
											"problem": { "type": "profile_mismatch" }
										},
										{
											"position": 3,
											"recordId": "r3",
											"kind": "payment_observation",
											"externalId": "PAY_123",
											"status": "dependency_failed",
											"blockedBy": "r2"
										}
									]
								},
								"schema": { "$ref": "#/components/schemas/BatchResponse" }
							}
						},
						"description": "Current progress and per-record outcomes.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"batch_not_found": {
										"value": {
											"detail": "No batch exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No batch exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/batch_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No batch exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a batch",
				"tags": ["Batches"]
			},
			"put": {
				"description": "Requires the write scope of every kind in the batch (customers:write, receivables:write, payment_observations:write, financial_corrections:write). Queues up to 100 records, each the exact body of its synchronous operation, for asynchronous processing in array order. 202 acknowledges queued work only: it does not mean any record was accepted. Each record runs through the same authorization, schema and canonical operation as its synchronous route, with grants rechecked when it runs. A record whose declared dependency did not succeed is never attempted. A retry with the same identifier and an identical body returns the current state with 200 and queues nothing new, so a lost acknowledgement is safe to retry. A batch never declares a complete book.",
				"operationId": "putBatch",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this batch submission. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalBatchId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"records": [
									{
										"recordId": "r1",
										"kind": "customer",
										"externalId": "CUS_123",
										"body": {
											"contacts": [
												{
													"address": {
														"countryCode": "IE",
														"line1": "1 Example Street",
														"line2": "Example Building",
														"locality": "Dublin",
														"postalCode": "D02 X285",
														"region": "Dublin",
														"type": "home"
													},
													"email": {
														"address": "avery@example.test",
														"type": "personal"
													},
													"externalContactId": "CON_7F3K2Q",
													"fullName": "Avery Example",
													"isCustomerSelf": true,
													"isMain": true,
													"phone": {
														"number": "+35315550123",
														"type": "mobile"
													}
												}
											],
											"name": { "firstName": "Avery", "lastName": "Example" },
											"sourceReference": "member-ref-example",
											"type": "person"
										}
									},
									{
										"recordId": "r2",
										"kind": "receivable",
										"externalId": "REC_123",
										"dependsOn": ["r1"],
										"body": {
											"financialType": "loan_balance",
											"sourceRevision": 1,
											"balanceBreakdown": {
												"costs": { "amount": "0.00", "currency": "EUR" },
												"fees": { "amount": "50.00", "currency": "EUR" },
												"interest": { "amount": "200.00", "currency": "EUR" },
												"principal": { "amount": "1000.00", "currency": "EUR" }
											},
											"creditUnion": {
												"arrearsAmount": {
													"amount": "1250.00",
													"currency": "EUR"
												},
												"contractualInstalment": {
													"amount": { "amount": "125.00", "currency": "EUR" },
													"frequency": "monthly"
												},
												"defaultDate": "2026-07-01",
												"loanAccountReference": "loan-ref-example",
												"loanType": "personal_loan",
												"totalOutstandingAmount": {
													"amount": "4000.00",
													"currency": "EUR"
												}
											},
											"dueDate": "2026-08-01",
											"recoverableAmount": {
												"amount": "1250.00",
												"currency": "EUR"
											},
											"responsibleCustomers": [
												{ "externalCustomerId": "CUS_123", "role": "primary" }
											],
											"sourceReference": "receivable-ref-example"
										}
									},
									{
										"recordId": "r3",
										"kind": "payment_observation",
										"externalId": "PAY_123",
										"dependsOn": ["r2"],
										"body": {
											"allocations": [
												{
													"amount": { "amount": "250.00", "currency": "EUR" },
													"externalReceivableId": "REC_123"
												}
											],
											"amount": { "amount": "300.00", "currency": "EUR" },
											"effectiveAt": "2026-08-29T11:45:00Z",
											"externalCustomerId": "CUS_123",
											"method": "bank_transfer",
											"sourceReference": "payment-ref-example",
											"type": "payment"
										}
									}
								]
							},
							"schema": { "$ref": "#/components/schemas/Batch" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"externalBatchId": "BATCH_2026_10_15",
									"status": "partially_succeeded",
									"bookCompleteness": "not_declared",
									"submittedAt": "2026-10-15T02:00:00.000Z",
									"completedAt": "2026-10-15T02:00:07.000Z",
									"counts": {
										"total": 3,
										"pending": 0,
										"succeeded": 1,
										"failed": 1,
										"dependencyFailed": 1
									},
									"records": [
										{
											"position": 1,
											"recordId": "r1",
											"kind": "customer",
											"externalId": "CUS_123",
											"status": "succeeded",
											"httpStatus": 201
										},
										{
											"position": 2,
											"recordId": "r2",
											"kind": "receivable",
											"externalId": "REC_123",
											"status": "failed",
											"httpStatus": 422,
											"problem": { "type": "profile_mismatch" }
										},
										{
											"position": 3,
											"recordId": "r3",
											"kind": "payment_observation",
											"externalId": "PAY_123",
											"status": "dependency_failed",
											"blockedBy": "r2"
										}
									]
								},
								"schema": { "$ref": "#/components/schemas/BatchResponse" }
							}
						},
						"description": "Identical safe retry; current progress.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"202": {
						"content": {
							"application/json": {
								"example": {
									"externalBatchId": "BATCH_2026_10_15",
									"status": "queued",
									"bookCompleteness": "not_declared",
									"submittedAt": "2026-10-15T02:00:00.000Z",
									"counts": {
										"total": 3,
										"pending": 3,
										"succeeded": 0,
										"failed": 0,
										"dependencyFailed": 0
									},
									"records": [
										{
											"position": 1,
											"recordId": "r1",
											"kind": "customer",
											"externalId": "CUS_123",
											"status": "pending"
										},
										{
											"position": 2,
											"recordId": "r2",
											"kind": "receivable",
											"externalId": "REC_123",
											"status": "pending"
										},
										{
											"position": 3,
											"recordId": "r3",
											"kind": "payment_observation",
											"externalId": "PAY_123",
											"status": "pending"
										}
									]
								},
								"schema": { "$ref": "#/components/schemas/BatchResponse" }
							}
						},
						"description": "Batch durably queued. No record has been accepted yet.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"batch_conflict": {
										"value": {
											"detail": "This batch identifier already holds a different submission.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This batch identifier already holds a different submission.",
											"type": "https://docs.paypathiq.com/problems/batch_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "This batch identifier already holds a different submission.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"batch_limit_exceeded": {
										"value": {
											"detail": "The connection already has 2 queued or running batches. Wait for one to finish.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "The connection already has 2 queued or running batches. Wait for one to finish.",
											"type": "https://docs.paypathiq.com/problems/batch_limit_exceeded"
										}
									},
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The connection already has 2 queued or running batches. Wait for one to finish. Each API key may send 60 requests per minute and run 1 request at a time.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Submit a bounded asynchronous batch",
				"tags": ["Batches"]
			}
		},
		"/v1/clients/{clientCode}/book-completions/{externalCompletionId}": {
			"get": {
				"description": "Requires receivables:read. Returns one accepted declaration with the Receivables it flagged and whether each is still held.",
				"operationId": "getBookCompletion",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this complete-book declaration. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalCompletionId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T02:30:00.000Z",
									"asOf": "2026-10-15T01:00:00.000Z",
									"batches": ["BATCH_BOOK_1", "BATCH_BOOK_2"],
									"coveredReceivableCount": 180,
									"externalCompletionId": "BOOK_7",
									"omissions": [
										{
											"externalReceivableId": "REC_999",
											"flaggedAt": "2026-10-15T02:30:00.000Z",
											"state": "held"
										}
									],
									"omissionsTruncated": false,
									"omittedReceivableCount": 1,
									"scope": "all_receivables",
									"sourcePosition": 7
								},
								"schema": {
									"$ref": "#/components/schemas/BookCompletionResponse"
								}
							}
						},
						"description": "Accepted complete-book declaration.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No evidence exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No evidence exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No evidence exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a complete-book declaration",
				"tags": ["Complete books"]
			},
			"put": {
				"description": "Requires receivables:write. Declares that the listed batches carried the complete scoped book. PayPathIQ verifies that every listed batch belongs to this connection, finished with every record (including dependent records) accepted, and that the accepted Receivables match expectedReceivableCount; otherwise nothing changes. Open Receivables that existed before the earliest batch and are missing from the verified book are flagged and their recovery and Payment actions held. They are never settled, forgiven, closed or deleted, financial history is untouched, and unaffected Receivables continue. The flag is shown on the Receivable as financialPosition.missingFromCompleteBook. A later verified complete book that contains the Receivable, an authorized close, or an authorized correction to a zero balance clears only this restriction. An identical retry returns 200 and changes nothing. Batches alone never declare completeness, and incremental omissions have no effect.",
				"operationId": "putBookCompletion",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this complete-book declaration. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalCompletionId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"asOf": "2026-10-15T01:00:00Z",
								"batches": ["BATCH_BOOK_1", "BATCH_BOOK_2"],
								"expectedReceivableCount": 180,
								"scope": "all_receivables",
								"sourcePosition": 7
							},
							"schema": { "$ref": "#/components/schemas/BookCompletion" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T02:30:00.000Z",
									"asOf": "2026-10-15T01:00:00.000Z",
									"batches": ["BATCH_BOOK_1", "BATCH_BOOK_2"],
									"coveredReceivableCount": 180,
									"externalCompletionId": "BOOK_7",
									"omissions": [
										{
											"externalReceivableId": "REC_999",
											"flaggedAt": "2026-10-15T02:30:00.000Z",
											"state": "held"
										}
									],
									"omissionsTruncated": false,
									"omittedReceivableCount": 1,
									"scope": "all_receivables",
									"sourcePosition": 7
								},
								"schema": {
									"$ref": "#/components/schemas/BookCompletionResponse"
								}
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T02:30:00.000Z",
									"asOf": "2026-10-15T01:00:00.000Z",
									"batches": ["BATCH_BOOK_1", "BATCH_BOOK_2"],
									"coveredReceivableCount": 180,
									"externalCompletionId": "BOOK_7",
									"omissions": [
										{
											"externalReceivableId": "REC_999",
											"flaggedAt": "2026-10-15T02:30:00.000Z",
											"state": "held"
										}
									],
									"omissionsTruncated": false,
									"omittedReceivableCount": 1,
									"scope": "all_receivables",
									"sourcePosition": 7
								},
								"schema": {
									"$ref": "#/components/schemas/BookCompletionResponse"
								}
							}
						},
						"description": "Verified; missing Receivables flagged and held atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"book_completion_unverified": {
										"value": {
											"detail": "A listed batch is missing, not fully accepted, or its accepted Receivables do not match expectedReceivableCount.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A listed batch is missing, not fully accepted, or its accepted Receivables do not match expectedReceivableCount.",
											"type": "https://docs.paypathiq.com/problems/book_completion_unverified"
										}
									},
									"source_position_conflict": {
										"value": {
											"detail": "The position is not higher than every accepted complete-book position, or asOf is earlier than the latest accepted book.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The position is not higher than every accepted complete-book position, or asOf is earlier than the latest accepted book.",
											"type": "https://docs.paypathiq.com/problems/source_position_conflict"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "Identity already has different immutable evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Identity already has different immutable evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "A listed batch is missing, not fully accepted, or its accepted Receivables do not match expectedReceivableCount. The position is not higher than every accepted complete-book position, or asOf is earlier than the latest accepted book. Identity already has different immutable evidence.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Declare a verified complete book",
				"tags": ["Complete books"]
			}
		},
		"/v1/clients/{clientCode}/changes": {
			"get": {
				"description": "Requires customers:read, receivables:read, or both. Returns committed changes in a stable order with a cursor for resuming after an outage. Each event identifies the resource, its type and its accepted revision, and nothing else: read the resource (which needs its own read scope) for current detail. Events for a resource type are returned only while the grant holds that type's read scope. Delivery is at least once; discard repeated eventId values. A change is visible only after the mutation that produced it commits, and a rolled-back mutation produces none. Changes are retained for 30 days; a cursor older than that returns 410 change_cursor_expired. To start or resynchronize, request from=latest to obtain a cursor, read the current Customers and Receivables you need, then resume from that cursor. Customer and Receivable changes are produced today; other resource families will add their own types as they become available.",
				"operationId": "listChanges",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque cursor from a previous response's nextCursor. Omit it to read from the oldest retained change.",
						"in": "query",
						"name": "cursor",
						"required": false,
						"schema": { "maxLength": 200, "minLength": 1, "type": "string" }
					},
					{
						"description": "Use latest, without a cursor, to obtain a cursor positioned after every change committed so far. The response contains no changes.",
						"in": "query",
						"name": "from",
						"required": false,
						"schema": { "const": "latest", "type": "string" }
					},
					{
						"description": "Maximum changes to return, from 1 to 500. Defaults to 100.",
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": { "maximum": 500, "minimum": 1, "type": "integer" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"data": [
										{
											"eventId": "6f1c2d4e-8a3b-4c5d-9e7f-0a1b2c3d4e5f",
											"occurredAt": "2026-10-15T09:30:00.000Z",
											"resource": { "id": "CUS_123", "type": "customer" },
											"revision": 1,
											"type": "customer.created"
										},
										{
											"eventId": "0b9e8d7c-6a5f-4e3d-8c2b-1a0f9e8d7c6b",
											"occurredAt": "2026-10-15T09:30:01.000Z",
											"resource": { "id": "REC_456", "type": "receivable" },
											"revision": 2,
											"type": "receivable.updated"
										}
									],
									"hasMore": false,
									"nextCursor": "OWMyZjRlNmEtMWIzZC00ZjVhLThjN2UtMmQ0YTZiOGMwZTFmOjI"
								},
								"schema": { "$ref": "#/components/schemas/ChangeFeedResponse" }
							}
						},
						"description": "A page of changes and the cursor to resume from.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"410": {
						"content": {
							"application/problem+json": {
								"examples": {
									"change_cursor_expired": {
										"value": {
											"detail": "The changes after this cursor are no longer retained. Request from=latest and resynchronize.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 410,
											"title": "The changes after this cursor are no longer retained. Request from=latest and resynchronize.",
											"type": "https://docs.paypathiq.com/problems/change_cursor_expired"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The changes after this cursor are no longer retained. Request from=latest and resynchronize.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_change_cursor": {
										"value": {
											"detail": "The cursor was not issued by this change feed for this Client.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "The cursor was not issued by this change feed for this Client.",
											"type": "https://docs.paypathiq.com/problems/invalid_change_cursor"
										}
									},
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The cursor was not issued by this change feed for this Client. Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "List changes",
				"tags": ["Changes"]
			}
		},
		"/v1/clients/{clientCode}/credit-notes/{externalEventId}": {
			"get": {
				"operationId": "getCreditNote",
				"summary": "Read an immutable CreditNote",
				"description": "Requires financial_corrections:read. Returns source-owned evidence, never private staff content.",
				"parameters": [
					{
						"name": "clientCode",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					{
						"name": "externalEventId",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					}
				],
				"security": [{ "BearerAuth": [] }],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"type": "credit_note",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "billing_correction",
									"sourceReference": "CREDIT_SOURCE",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/CreditNoteResponse" }
							}
						},
						"description": "Accepted evidence.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No evidence exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No evidence exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No evidence exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				}
			},
			"put": {
				"operationId": "putCreditNote",
				"summary": "Record an immutable CreditNote",
				"description": "Requires financial_corrections:write. The type must match the resource family. Credits and write-offs decrease balances; adjustments declare their direction. Exact retries are safe; changed identities and stale source revisions conflict. These operations do not collect money or initiate refunds.",
				"parameters": [
					{
						"name": "clientCode",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					{
						"name": "externalEventId",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					}
				],
				"security": [{ "BearerAuth": [] }],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"type": "credit_note",
								"amount": { "amount": "10.00", "currency": "EUR" },
								"externalReceivableId": "REC_EXAMPLE",
								"sourceRevision": 2,
								"effectiveAt": "2026-10-14T12:00:00Z",
								"reason": "billing_correction",
								"sourceReference": "CREDIT_SOURCE"
							},
							"schema": { "$ref": "#/components/schemas/CreditNote" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"type": "credit_note",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "billing_correction",
									"sourceReference": "CREDIT_SOURCE",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/CreditNoteResponse" }
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"type": "credit_note",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "billing_correction",
									"sourceReference": "CREDIT_SOURCE",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/CreditNoteResponse" }
							}
						},
						"description": "Evidence and balance committed atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_operation_required": {
										"value": {
											"detail": "The connection declares snapshot balance authority; event balance writes are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The connection declares snapshot balance authority; event balance writes are unavailable.",
											"type": "https://docs.paypathiq.com/problems/financial_operation_required"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "Identity already has different immutable evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Identity already has different immutable evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									},
									"source_revision_conflict": {
										"value": {
											"detail": "Source revision is not newer than the accepted position.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Source revision is not newer than the accepted position.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "The source Receivable must already exist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The source Receivable must already exist.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"balance_mismatch": {
										"value": {
											"detail": "The financial effect exceeds the supported balance bounds.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The financial effect exceeds the supported balance bounds.",
											"type": "https://docs.paypathiq.com/problems/balance_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The connection declares snapshot balance authority; event balance writes are unavailable. Identity already has different immutable evidence. Source revision is not newer than the accepted position. The source Receivable must already exist. The financial effect exceeds the supported balance bounds.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				}
			}
		},
		"/v1/clients/{clientCode}/adjustments/{externalEventId}": {
			"get": {
				"operationId": "getAdjustment",
				"summary": "Read an immutable Adjustment",
				"description": "Requires financial_corrections:read. Returns source-owned evidence, never private staff content.",
				"parameters": [
					{
						"name": "clientCode",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					{
						"name": "externalEventId",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					}
				],
				"security": [{ "BearerAuth": [] }],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"type": "adjustment",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "billing_correction",
									"sourceReference": "CREDIT_SOURCE",
									"direction": "decrease",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/AdjustmentResponse" }
							}
						},
						"description": "Accepted evidence.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No evidence exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No evidence exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No evidence exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				}
			},
			"put": {
				"operationId": "putAdjustment",
				"summary": "Record an immutable Adjustment",
				"description": "Requires financial_corrections:write. The type must match the resource family. Credits and write-offs decrease balances; adjustments declare their direction. Exact retries are safe; changed identities and stale source revisions conflict. These operations do not collect money or initiate refunds.",
				"parameters": [
					{
						"name": "clientCode",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					{
						"name": "externalEventId",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					}
				],
				"security": [{ "BearerAuth": [] }],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"type": "adjustment",
								"amount": { "amount": "10.00", "currency": "EUR" },
								"externalReceivableId": "REC_EXAMPLE",
								"sourceRevision": 2,
								"effectiveAt": "2026-10-14T12:00:00Z",
								"reason": "billing_correction",
								"sourceReference": "CREDIT_SOURCE",
								"direction": "decrease"
							},
							"schema": { "$ref": "#/components/schemas/Adjustment" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"type": "adjustment",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "billing_correction",
									"sourceReference": "CREDIT_SOURCE",
									"direction": "decrease",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/AdjustmentResponse" }
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"type": "adjustment",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "billing_correction",
									"sourceReference": "CREDIT_SOURCE",
									"direction": "decrease",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/AdjustmentResponse" }
							}
						},
						"description": "Evidence and balance committed atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_operation_required": {
										"value": {
											"detail": "The connection declares snapshot balance authority; event balance writes are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The connection declares snapshot balance authority; event balance writes are unavailable.",
											"type": "https://docs.paypathiq.com/problems/financial_operation_required"
										}
									},
									"receivable_state_conflict": {
										"value": {
											"detail": "A positive aggregate loan balance cannot overlap itemized obligations for the same Source loan.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A positive aggregate loan balance cannot overlap itemized obligations for the same Source loan.",
											"type": "https://docs.paypathiq.com/problems/receivable_state_conflict"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "Identity already has different immutable evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Identity already has different immutable evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									},
									"source_revision_conflict": {
										"value": {
											"detail": "Source revision is not newer than the accepted position.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Source revision is not newer than the accepted position.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "The source Receivable must already exist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The source Receivable must already exist.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"balance_mismatch": {
										"value": {
											"detail": "The financial effect exceeds the supported balance bounds.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The financial effect exceeds the supported balance bounds.",
											"type": "https://docs.paypathiq.com/problems/balance_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The connection declares snapshot balance authority; event balance writes are unavailable. A positive aggregate loan balance cannot overlap itemized obligations for the same Source loan. Identity already has different immutable evidence. Source revision is not newer than the accepted position. The source Receivable must already exist. The financial effect exceeds the supported balance bounds.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				}
			}
		},
		"/v1/clients/{clientCode}/write-offs/{externalEventId}": {
			"get": {
				"operationId": "getWriteOff",
				"summary": "Read an immutable WriteOff",
				"description": "Requires financial_corrections:read. Returns source-owned evidence, never private staff content.",
				"parameters": [
					{
						"name": "clientCode",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					{
						"name": "externalEventId",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					}
				],
				"security": [{ "BearerAuth": [] }],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"type": "write_off",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "approved_write_off",
									"sourceReference": "CREDIT_SOURCE",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/WriteOffResponse" }
							}
						},
						"description": "Accepted evidence.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No evidence exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No evidence exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No evidence exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				}
			},
			"put": {
				"operationId": "putWriteOff",
				"summary": "Record an immutable WriteOff",
				"description": "Requires financial_corrections:write. The type must match the resource family. Credits and write-offs decrease balances; adjustments declare their direction. Exact retries are safe; changed identities and stale source revisions conflict. These operations do not collect money or initiate refunds.",
				"parameters": [
					{
						"name": "clientCode",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					},
					{
						"name": "externalEventId",
						"in": "path",
						"required": true,
						"schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$" }
					}
				],
				"security": [{ "BearerAuth": [] }],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"type": "write_off",
								"amount": { "amount": "10.00", "currency": "EUR" },
								"externalReceivableId": "REC_EXAMPLE",
								"sourceRevision": 2,
								"effectiveAt": "2026-10-14T12:00:00Z",
								"reason": "approved_write_off",
								"sourceReference": "CREDIT_SOURCE"
							},
							"schema": { "$ref": "#/components/schemas/WriteOff" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"type": "write_off",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "approved_write_off",
									"sourceReference": "CREDIT_SOURCE",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/WriteOffResponse" }
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"type": "write_off",
									"amount": { "amount": "10.00", "currency": "EUR" },
									"externalReceivableId": "REC_EXAMPLE",
									"sourceRevision": 2,
									"effectiveAt": "2026-10-14T12:00:00Z",
									"reason": "approved_write_off",
									"sourceReference": "CREDIT_SOURCE",
									"externalEventId": "EVENT_EXAMPLE",
									"acceptedAt": "2026-10-14T12:00:01Z"
								},
								"schema": { "$ref": "#/components/schemas/WriteOffResponse" }
							}
						},
						"description": "Evidence and balance committed atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_operation_required": {
										"value": {
											"detail": "The connection declares snapshot balance authority; event balance writes are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The connection declares snapshot balance authority; event balance writes are unavailable.",
											"type": "https://docs.paypathiq.com/problems/financial_operation_required"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "Identity already has different immutable evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Identity already has different immutable evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									},
									"source_revision_conflict": {
										"value": {
											"detail": "Source revision is not newer than the accepted position.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Source revision is not newer than the accepted position.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "The source Receivable must already exist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The source Receivable must already exist.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"balance_mismatch": {
										"value": {
											"detail": "The financial effect exceeds the supported balance bounds.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The financial effect exceeds the supported balance bounds.",
											"type": "https://docs.paypathiq.com/problems/balance_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The connection declares snapshot balance authority; event balance writes are unavailable. Identity already has different immutable evidence. Source revision is not newer than the accepted position. The source Receivable must already exist. The financial effect exceeds the supported balance bounds.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				}
			}
		},
		"/v1/clients/{clientCode}/customers/{externalCustomerId}": {
			"get": {
				"description": "Requires customers:read. Returns the calling Integration's current Customer representation, not staff corrections or the combined operational record.",
				"operationId": "getCustomer",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is stable when Customer details change and is never a PayPathIQ ID, member or account number, or contact detail.",
						"in": "path",
						"name": "externalCustomerId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"contacts": [
										{
											"address": {
												"countryCode": "IE",
												"line1": "1 Example Street",
												"line2": "Example Building",
												"locality": "Dublin",
												"postalCode": "D02 X285",
												"region": "Dublin",
												"type": "home"
											},
											"email": {
												"address": "avery@example.test",
												"type": "personal"
											},
											"externalContactId": "CON_7F3K2Q",
											"fullName": "Avery Example",
											"isCustomerSelf": true,
											"isMain": true,
											"phone": { "number": "+35315550123", "type": "mobile" }
										}
									],
									"name": { "firstName": "Avery", "lastName": "Example" },
									"sourceReference": "member-ref-example",
									"type": "person",
									"externalCustomerId": "CUS_123",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/CustomerResponse" }
							}
						},
						"description": "Current Customer representation.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"customer_not_found": {
										"value": {
											"detail": "Customer was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Customer was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/customer_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Customer was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a Customer",
				"tags": ["Customers"]
			},
			"patch": {
				"description": "Requires customers:write. Applies RFC 7396 JSON Merge Patch to the existing source-owned representation and validates the complete closed result. Contacts replace the supplied collection; always include stable externalContactId values. See https://docs.paypathiq.com/concepts#updating-contacts.",
				"operationId": "patchCustomer",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is stable when Customer details change and is never a PayPathIQ ID, member or account number, or contact detail.",
						"in": "path",
						"name": "externalCustomerId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/merge-patch+json": {
							"example": { "name": { "firstName": "Avery" } },
							"schema": { "$ref": "#/components/schemas/CustomerMergePatch" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"contacts": [
										{
											"address": {
												"countryCode": "IE",
												"line1": "1 Example Street",
												"line2": "Example Building",
												"locality": "Dublin",
												"postalCode": "D02 X285",
												"region": "Dublin",
												"type": "home"
											},
											"email": {
												"address": "avery@example.test",
												"type": "personal"
											},
											"externalContactId": "CON_7F3K2Q",
											"fullName": "Avery Example",
											"isCustomerSelf": true,
											"isMain": true,
											"phone": { "number": "+35315550123", "type": "mobile" }
										}
									],
									"name": { "firstName": "Avery", "lastName": "Example" },
									"sourceReference": "member-ref-example",
									"type": "person",
									"externalCustomerId": "CUS_123",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/CustomerResponse" }
							}
						},
						"description": "Customer updated, or patch was a safe no-op.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"customer_not_found": {
										"value": {
											"detail": "Customer must exist before it can be patched.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Customer must exist before it can be patched.",
											"type": "https://docs.paypathiq.com/problems/customer_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Customer must exist before it can be patched.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"contact_update_unsupported": {
										"value": {
											"detail": "Contacts can change only when every existing and submitted Contact has an externalContactId.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Contacts can change only when every existing and submitted Contact has an externalContactId.",
											"type": "https://docs.paypathiq.com/problems/contact_update_unsupported"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Contacts can change only when every existing and submitted Contact has an externalContactId.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Update selected Customer fields",
				"tags": ["Customers"]
			},
			"put": {
				"description": "Requires customers:write. Creates or replaces the Integration's source-owned Customer representation. Contacts are matched by externalContactId: a known ID is updated, a new ID is added, and an omitted ID is deactivated. Omit contacts to leave them unchanged.",
				"operationId": "putCustomer",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier for this Customer's source-system record. It is stable when Customer details change and is never a PayPathIQ ID, member or account number, or contact detail.",
						"in": "path",
						"name": "externalCustomerId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"contacts": [
									{
										"address": {
											"countryCode": "IE",
											"line1": "1 Example Street",
											"line2": "Example Building",
											"locality": "Dublin",
											"postalCode": "D02 X285",
											"region": "Dublin",
											"type": "home"
										},
										"email": {
											"address": "avery@example.test",
											"type": "personal"
										},
										"externalContactId": "CON_7F3K2Q",
										"fullName": "Avery Example",
										"isCustomerSelf": true,
										"isMain": true,
										"phone": { "number": "+35315550123", "type": "mobile" }
									}
								],
								"name": { "firstName": "Avery", "lastName": "Example" },
								"sourceReference": "member-ref-example",
								"type": "person"
							},
							"schema": { "$ref": "#/components/schemas/Customer" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"contacts": [
										{
											"address": {
												"countryCode": "IE",
												"line1": "1 Example Street",
												"line2": "Example Building",
												"locality": "Dublin",
												"postalCode": "D02 X285",
												"region": "Dublin",
												"type": "home"
											},
											"email": {
												"address": "avery@example.test",
												"type": "personal"
											},
											"externalContactId": "CON_7F3K2Q",
											"fullName": "Avery Example",
											"isCustomerSelf": true,
											"isMain": true,
											"phone": { "number": "+35315550123", "type": "mobile" }
										}
									],
									"name": { "firstName": "Avery", "lastName": "Example" },
									"sourceReference": "member-ref-example",
									"type": "person",
									"externalCustomerId": "CUS_123",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/CustomerResponse" }
							}
						},
						"description": "Customer replaced, or request was an identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"contacts": [
										{
											"address": {
												"countryCode": "IE",
												"line1": "1 Example Street",
												"line2": "Example Building",
												"locality": "Dublin",
												"postalCode": "D02 X285",
												"region": "Dublin",
												"type": "home"
											},
											"email": {
												"address": "avery@example.test",
												"type": "personal"
											},
											"externalContactId": "CON_7F3K2Q",
											"fullName": "Avery Example",
											"isCustomerSelf": true,
											"isMain": true,
											"phone": { "number": "+35315550123", "type": "mobile" }
										}
									],
									"name": { "firstName": "Avery", "lastName": "Example" },
									"sourceReference": "member-ref-example",
									"type": "person",
									"externalCustomerId": "CUS_123",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/CustomerResponse" }
							}
						},
						"description": "Customer created and projected synchronously.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"contact_update_unsupported": {
										"value": {
											"detail": "Contacts can change only when every existing and submitted Contact has an externalContactId.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Contacts can change only when every existing and submitted Contact has an externalContactId.",
											"type": "https://docs.paypathiq.com/problems/contact_update_unsupported"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Contacts can change only when every existing and submitted Contact has an externalContactId.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Create or replace a Customer",
				"tags": ["Customers"]
			}
		},
		"/v1/clients/{clientCode}/payment-observations/{externalPaymentObservationId}": {
			"get": {
				"description": "Requires payment_observations:read. Returns one immutable Integration-facing Payment observation.",
				"operationId": "getPaymentObservation",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque immutable Payment-observation identifier supplied by the Integration.",
						"in": "path",
						"name": "externalPaymentObservationId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"allocations": [
										{
											"amount": { "amount": "250.00", "currency": "EUR" },
											"externalReceivableId": "REC_123"
										}
									],
									"amount": { "amount": "300.00", "currency": "EUR" },
									"effectiveAt": "2026-08-29T11:45:00Z",
									"externalCustomerId": "CUS_123",
									"method": "bank_transfer",
									"sourceReference": "payment-ref-example",
									"type": "payment",
									"acceptedAt": "2026-08-29T12:00:00Z",
									"allocationBasis": "explicit",
									"externalPaymentObservationId": "PAY_123",
									"unappliedAmount": { "amount": "50.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentObservationResponse"
								}
							}
						},
						"description": "Accepted Payment observation.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_observation_not_found": {
										"value": {
											"detail": "Payment observation was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Payment observation was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/payment_observation_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Payment observation was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a Payment observation",
				"tags": ["Payment observations"]
			},
			"put": {
				"description": "Requires payment_observations:write. Records one immutable payment, refund or reversal with its allocations, ledger effects and audit evidence in one locked transaction. A payment applies its explicit allocations first; with none, the connection's Client-approved allocation rule applies when the paying Customer is identified and the rule's condition is unambiguous; otherwise the whole amount stays unapplied. Oldest-first is never assumed. Only allocated amounts reduce a Receivable, and an allocation may not exceed its Receivable's balance. New observations require matching Source and working positions without unused working credits; otherwise explicit reconciliation is required and the request returns 409 financial_operation_required. A refund or reversal records an exact amount against an original Payment and may be partial. Its allocations return amounts to the Receivables that Payment was allocated to (each with an optional resulting-balance guard) and the remainder is taken from the Payment's unapplied funds; cumulative corrections may not exceed the Payment, any single allocation, or the unapplied remainder. It updates the canonical Payment, its allocations and each Receivable's working balance atomically. Recording a refund or reversal is evidence only; it never executes a transfer, and it is distinct from credits and write-offs. Money that stays unapplied is announced as a customer.updated change for the paying Customer. If the response is lost, repeat the identical payload with the same observation ID; a replay changes nothing and conflicting reuse returns 409 payment_observation_conflict.",
				"operationId": "putPaymentObservation",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque immutable Payment-observation identifier supplied by the Integration.",
						"in": "path",
						"name": "externalPaymentObservationId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"allocations": [
									{
										"amount": { "amount": "250.00", "currency": "EUR" },
										"externalReceivableId": "REC_123"
									}
								],
								"amount": { "amount": "300.00", "currency": "EUR" },
								"effectiveAt": "2026-08-29T11:45:00Z",
								"externalCustomerId": "CUS_123",
								"method": "bank_transfer",
								"sourceReference": "payment-ref-example",
								"type": "payment"
							},
							"schema": { "$ref": "#/components/schemas/PaymentObservation" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"allocations": [
										{
											"amount": { "amount": "250.00", "currency": "EUR" },
											"externalReceivableId": "REC_123"
										}
									],
									"amount": { "amount": "300.00", "currency": "EUR" },
									"effectiveAt": "2026-08-29T11:45:00Z",
									"externalCustomerId": "CUS_123",
									"method": "bank_transfer",
									"sourceReference": "payment-ref-example",
									"type": "payment",
									"acceptedAt": "2026-08-29T12:00:00Z",
									"allocationBasis": "explicit",
									"externalPaymentObservationId": "PAY_123",
									"unappliedAmount": { "amount": "50.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentObservationResponse"
								}
							}
						},
						"description": "Identical retry of the accepted observation.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"allocations": [
										{
											"amount": { "amount": "250.00", "currency": "EUR" },
											"externalReceivableId": "REC_123"
										}
									],
									"amount": { "amount": "300.00", "currency": "EUR" },
									"effectiveAt": "2026-08-29T11:45:00Z",
									"externalCustomerId": "CUS_123",
									"method": "bank_transfer",
									"sourceReference": "payment-ref-example",
									"type": "payment",
									"acceptedAt": "2026-08-29T12:00:00Z",
									"allocationBasis": "explicit",
									"externalPaymentObservationId": "PAY_123",
									"unappliedAmount": { "amount": "50.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentObservationResponse"
								}
							}
						},
						"description": "Payment observation accepted and projected synchronously.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_operation_required": {
										"value": {
											"detail": "The connection declares snapshot balance authority, or Source and working positions require reconciliation; this event balance write is unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The connection declares snapshot balance authority, or Source and working positions require reconciliation; this event balance write is unavailable.",
											"type": "https://docs.paypathiq.com/problems/financial_operation_required"
										}
									},
									"allocation_exceeds_balance": {
										"value": {
											"detail": "An allocation exceeds the current balance of its Receivable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "An allocation exceeds the current balance of its Receivable.",
											"type": "https://docs.paypathiq.com/problems/allocation_exceeds_balance"
										}
									},
									"balance_mismatch": {
										"value": {
											"detail": "Resulting Recoverable amount does not match the locked Receivable balance.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Resulting Recoverable amount does not match the locked Receivable balance.",
											"type": "https://docs.paypathiq.com/problems/balance_mismatch"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "A referenced Receivable, paying Customer or related Payment observation is missing from the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A referenced Receivable, paying Customer or related Payment observation is missing from the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"payment_observation_conflict": {
										"value": {
											"detail": "This external Payment ID already has different immutable content, or a refund or reversal exceeds what remains correctable on the related Payment, one of its allocations, or its unapplied funds, or targets a Receivable the Payment was not allocated to.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This external Payment ID already has different immutable content, or a refund or reversal exceeds what remains correctable on the related Payment, one of its allocations, or its unapplied funds, or targets a Receivable the Payment was not allocated to.",
											"type": "https://docs.paypathiq.com/problems/payment_observation_conflict"
										}
									},
									"payment_policy_blocked": {
										"value": {
											"detail": "Current Customer and Receivable policy does not allow this external Payment result.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Current Customer and Receivable policy does not allow this external Payment result.",
											"type": "https://docs.paypathiq.com/problems/payment_policy_blocked"
										}
									},
									"receivable_state_conflict": {
										"value": {
											"detail": "The observation would move the Receivable balance in the opposite direction to its type.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The observation would move the Receivable balance in the opposite direction to its type.",
											"type": "https://docs.paypathiq.com/problems/receivable_state_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The connection declares snapshot balance authority, or Source and working positions require reconciliation; this event balance write is unavailable. An allocation exceeds the current balance of its Receivable. Resulting Recoverable amount does not match the locked Receivable balance. A referenced Receivable, paying Customer or related Payment observation is missing from the authorized scope. This external Payment ID already has different immutable content, or a refund or reversal exceeds what remains correctable on the related Payment, one of its allocations, or its unapplied funds, or targets a Receivable the Payment was not allocated to. Current Customer and Receivable policy does not allow this external Payment result. The observation would move the Receivable balance in the opposite direction to its type.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Record a Payment observation",
				"tags": ["Payment observations"]
			}
		},
		"/v1/clients/{clientCode}/payment-deliveries": {
			"get": {
				"description": "Requires payment_observations:read and a connection whose receipt delivery owner is partner. Lists provider-confirmed Payments of this connection's hosted Payment requests, in Payment request identifier order, with stable payment and allocation references. Retrieving a Payment is not delivery and never implies posting: delivery attempts are reported separately, and accountingAcceptance reflects only receipt lines acknowledged through payment reconciliations. Payment requests without exactly one confirmed Payment are not listed.",
				"operationId": "listPaymentDeliveries",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Only Payments in this accounting acceptance state are returned.",
						"in": "query",
						"name": "accountingAcceptance",
						"required": false,
						"schema": {
							"enum": [
								"pending",
								"partially_acknowledged",
								"acknowledged",
								"held"
							],
							"type": "string"
						}
					},
					{
						"description": "The nextAfter value of a previous page. Omit it to read from the start.",
						"in": "query",
						"name": "after",
						"required": false,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Maximum Payments to return, from 1 to 100. Defaults to 50.",
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": { "maximum": 100, "minimum": 1, "type": "integer" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"data": [
										{
											"accountingAcceptance": "partially_acknowledged",
											"allocations": [
												{
													"allocatedAmount": {
														"amount": "100.00",
														"currency": "EUR"
													},
													"allocationReference": "5f1d3c6e-2b6a-4a57-9a3e-0d8b1c2f4a10",
													"externalReceivableId": "REC_EXAMPLE_1",
													"matchedAmount": {
														"amount": "100.00",
														"currency": "EUR"
													},
													"unmatchedAmount": {
														"amount": "0.00",
														"currency": "EUR"
													}
												},
												{
													"allocatedAmount": {
														"amount": "200.00",
														"currency": "EUR"
													},
													"allocationReference": "7a9e1b44-6c0f-4f25-8d71-3e5a9b0c6d21",
													"externalReceivableId": "REC_EXAMPLE_2",
													"matchedAmount": {
														"amount": "0.00",
														"currency": "EUR"
													},
													"unmatchedAmount": {
														"amount": "200.00",
														"currency": "EUR"
													}
												}
											],
											"confirmedAt": "2026-10-15T12:00:00.000Z",
											"delivery": {
												"attempts": [
													{
														"channel": "api",
														"externalAttemptId": "DELIVERY_ATTEMPT_1",
														"outcome": "delivered",
														"recordedAt": "2026-10-15T12:10:00.000Z"
													}
												],
												"state": "delivered"
											},
											"deliveryOwner": "partner",
											"externalPaymentRequestId": "PAYREQ_EXAMPLE",
											"paymentAmount": {
												"amount": "300.00",
												"currency": "EUR"
											},
											"paymentReference": "0c4e8a52-1d3b-4e6f-b7a9-2f5c8d1e3a60",
											"reconciliations": ["RECON_EXAMPLE"],
											"unappliedAmount": {
												"amount": "0.00",
												"currency": "EUR"
											},
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"hasMore": false,
									"nextAfter": null
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentDeliveryListResponse"
								}
							}
						},
						"description": "A page of delivery-ready Payments.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receipt_delivery_owner_mismatch": {
										"value": {
											"detail": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_owner_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "List delivery-ready Payments",
				"tags": ["Payment delivery"]
			}
		},
		"/v1/clients/{clientCode}/payment-deliveries/{externalPaymentRequestId}": {
			"get": {
				"description": "Requires payment_observations:read and a partner receipt delivery owner. Returns the confirmed Payment with stable payment and allocation references, the delivery attempts you reported and the progressive accountingAcceptance. Reading never records a delivery attempt and never changes accountingAcceptance.",
				"operationId": "getPaymentDelivery",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "The hosted Payment request whose confirmed Payment is being delivered.",
						"in": "path",
						"name": "externalPaymentRequestId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"accountingAcceptance": "partially_acknowledged",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"allocationReference": "5f1d3c6e-2b6a-4a57-9a3e-0d8b1c2f4a10",
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"allocationReference": "7a9e1b44-6c0f-4f25-8d71-3e5a9b0c6d21",
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"confirmedAt": "2026-10-15T12:00:00.000Z",
									"delivery": {
										"attempts": [
											{
												"channel": "api",
												"externalAttemptId": "DELIVERY_ATTEMPT_1",
												"outcome": "delivered",
												"recordedAt": "2026-10-15T12:10:00.000Z"
											}
										],
										"state": "delivered"
									},
									"deliveryOwner": "partner",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"paymentReference": "0c4e8a52-1d3b-4e6f-b7a9-2f5c8d1e3a60",
									"reconciliations": ["RECON_EXAMPLE"],
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentDeliveryResponse"
								}
							}
						},
						"description": "Delivery-ready Payment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_request_not_found": {
										"value": {
											"detail": "No Payment request exists at this authorized reference.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No Payment request exists at this authorized reference.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No Payment request exists at this authorized reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_not_confirmed": {
										"value": {
											"detail": "The Payment request has no single provider-confirmed Payment to deliver.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Payment request has no single provider-confirmed Payment to deliver.",
											"type": "https://docs.paypathiq.com/problems/payment_not_confirmed"
										}
									},
									"receipt_delivery_owner_mismatch": {
										"value": {
											"detail": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_owner_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Payment request has no single provider-confirmed Payment to deliver. This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a delivery-ready Payment",
				"tags": ["Payment delivery"]
			}
		},
		"/v1/clients/{clientCode}/payment-deliveries/{externalPaymentRequestId}/attempts/{externalAttemptId}": {
			"put": {
				"description": "Requires payment_observations:write and a partner receipt delivery owner. Records one immutable delivery attempt: an API delivery or file download, with the outcome downloaded, delivered or failed. An attempt is evidence of delivery only. It never marks the Payment accepted, never moves funds and never changes accountingAcceptance; only receipt lines acknowledged through a payment reconciliation do. Reusing the attempt identity with an identical body returns 200 and changes nothing, so a lost response is safe to repeat; different evidence returns 409.",
				"operationId": "putPaymentDeliveryAttempt",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "The hosted Payment request whose confirmed Payment is being delivered.",
						"in": "path",
						"name": "externalPaymentRequestId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this delivery attempt. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalAttemptId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": { "channel": "api", "outcome": "delivered" },
							"schema": {
								"$ref": "#/components/schemas/PaymentDeliveryAttempt"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"accountingAcceptance": "partially_acknowledged",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"allocationReference": "5f1d3c6e-2b6a-4a57-9a3e-0d8b1c2f4a10",
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"allocationReference": "7a9e1b44-6c0f-4f25-8d71-3e5a9b0c6d21",
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"confirmedAt": "2026-10-15T12:00:00.000Z",
									"delivery": {
										"attempts": [
											{
												"channel": "api",
												"externalAttemptId": "DELIVERY_ATTEMPT_1",
												"outcome": "delivered",
												"recordedAt": "2026-10-15T12:10:00.000Z"
											}
										],
										"state": "delivered"
									},
									"deliveryOwner": "partner",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"paymentReference": "0c4e8a52-1d3b-4e6f-b7a9-2f5c8d1e3a60",
									"reconciliations": ["RECON_EXAMPLE"],
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentDeliveryResponse"
								}
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"accountingAcceptance": "partially_acknowledged",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"allocationReference": "5f1d3c6e-2b6a-4a57-9a3e-0d8b1c2f4a10",
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"allocationReference": "7a9e1b44-6c0f-4f25-8d71-3e5a9b0c6d21",
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"confirmedAt": "2026-10-15T12:00:00.000Z",
									"delivery": {
										"attempts": [
											{
												"channel": "api",
												"externalAttemptId": "DELIVERY_ATTEMPT_1",
												"outcome": "delivered",
												"recordedAt": "2026-10-15T12:10:00.000Z"
											}
										],
										"state": "delivered"
									},
									"deliveryOwner": "partner",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"paymentReference": "0c4e8a52-1d3b-4e6f-b7a9-2f5c8d1e3a60",
									"reconciliations": ["RECON_EXAMPLE"],
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentDeliveryResponse"
								}
							}
						},
						"description": "Delivery attempt recorded.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_request_not_found": {
										"value": {
											"detail": "No Payment request exists at this authorized reference.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No Payment request exists at this authorized reference.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No Payment request exists at this authorized reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_not_confirmed": {
										"value": {
											"detail": "The Payment request has no single provider-confirmed Payment to deliver.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Payment request has no single provider-confirmed Payment to deliver.",
											"type": "https://docs.paypathiq.com/problems/payment_not_confirmed"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "The attempt identity already has different evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The attempt identity already has different evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									},
									"receipt_delivery_owner_mismatch": {
										"value": {
											"detail": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_owner_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Payment request has no single provider-confirmed Payment to deliver. The attempt identity already has different evidence. This connection declares PayPathIQ as the receipt delivery owner, so partner retrieval, delivery and acknowledgement operations are unavailable.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Record a delivery attempt",
				"tags": ["Payment delivery"]
			}
		},
		"/v1/clients/{clientCode}/payment-reconciliations/{externalReconciliationId}": {
			"get": {
				"description": "Requires payment_observations:read. Returns one reconciliation with its receipt lines and the Payment's current allocation, matched and unmatched amounts.",
				"operationId": "getPaymentReconciliation",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this reconciliation. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalReconciliationId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T12:30:00.000Z",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"externalReconciliationId": "RECON_EXAMPLE",
									"lines": [
										{
											"amount": { "amount": "100.00", "currency": "EUR" },
											"externalReceiptLineId": "RCPT_LINE_1",
											"externalReceivableId": "REC_EXAMPLE_1",
											"state": "matched"
										}
									],
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"revision": 1,
									"status": "matched",
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentReconciliationResponse"
								}
							}
						},
						"description": "Accepted reconciliation.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No reconciliation exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No reconciliation exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No reconciliation exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a payment reconciliation",
				"tags": ["Payment reconciliation"]
			},
			"put": {
				"description": "Requires payment_observations:write. Acknowledges the confirmed Payment of a hosted Payment request against one or more Source receipt lines. A line matches only when its stable receipt identity, Client, currency and Receivable reference fit an allocation of that Payment and the line fits inside the allocated amount not yet acknowledged; similar amounts or dates never match. Several reconciliations may acknowledge one Payment progressively, and the unmatched remainder stays explicit. No reconciliation changes funds, balances or the Payment: replaying a receipt acknowledges existing funds without another deduction. A line that does not fit is stored as held, preserving both figures, and the affected Receivables have recovery and Payment actions held until matching evidence or an authorized correction resolves it; other Receivables continue. Reconciliation is accepted while the Source feed is stale. Reusing a receipt line identity with different evidence returns 409 and records nothing. An identical retry returns 200 and changes nothing.",
				"operationId": "putPaymentReconciliation",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this reconciliation. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalReconciliationId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"externalPaymentRequestId": "PAYREQ_EXAMPLE",
								"receiptLines": [
									{
										"amount": { "amount": "100.00", "currency": "EUR" },
										"externalReceiptLineId": "RCPT_LINE_1",
										"externalReceivableId": "REC_EXAMPLE_1"
									}
								]
							},
							"schema": { "$ref": "#/components/schemas/PaymentReconciliation" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T12:30:00.000Z",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"externalReconciliationId": "RECON_EXAMPLE",
									"lines": [
										{
											"amount": { "amount": "100.00", "currency": "EUR" },
											"externalReceiptLineId": "RCPT_LINE_1",
											"externalReceivableId": "REC_EXAMPLE_1",
											"state": "matched"
										}
									],
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"revision": 1,
									"status": "matched",
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentReconciliationResponse"
								}
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T12:30:00.000Z",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"externalReconciliationId": "RECON_EXAMPLE",
									"lines": [
										{
											"amount": { "amount": "100.00", "currency": "EUR" },
											"externalReceiptLineId": "RCPT_LINE_1",
											"externalReceivableId": "REC_EXAMPLE_1",
											"state": "matched"
										}
									],
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"revision": 1,
									"status": "matched",
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentReconciliationResponse"
								}
							}
						},
						"description": "Receipt lines recorded atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_request_not_found": {
										"value": {
											"detail": "No Payment request exists at this authorized reference.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No Payment request exists at this authorized reference.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No Payment request exists at this authorized reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_not_confirmed": {
										"value": {
											"detail": "The Payment request has no provider-confirmed Payment to acknowledge.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Payment request has no provider-confirmed Payment to acknowledge.",
											"type": "https://docs.paypathiq.com/problems/payment_not_confirmed"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "A reconciliation or receipt line identity already has different immutable evidence.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A reconciliation or receipt line identity already has different immutable evidence.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Payment request has no provider-confirmed Payment to acknowledge. A reconciliation or receipt line identity already has different immutable evidence.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Reconcile a Payment against accounting receipt lines",
				"tags": ["Payment reconciliation"]
			}
		},
		"/v1/clients/{clientCode}/payment-reconciliations/{externalReconciliationId}/resolution": {
			"put": {
				"description": "Requires financial_corrections:write. Resolves the held differences of one reconciliation. matching_evidence is accepted only when matched receipt lines now account for the full allocated amount of every held Receivable. authorized_correction records the Source's reference to a Client-authorized correction. Both preserve the original receipt figures and clear only this reconciliation's restriction; recovery never resumes automatically. Resolving a reconciliation with no held difference returns 409. An identical retry returns 200 and changes nothing.",
				"operationId": "putPaymentReconciliationResolution",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned identifier of this reconciliation. Reusing it with an identical body is a safe retry.",
						"in": "path",
						"name": "externalReconciliationId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"basis": "authorized_correction",
								"reference": "SRC_CORRECTION_17"
							},
							"schema": {
								"$ref": "#/components/schemas/PaymentReconciliationResolution"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T12:30:00.000Z",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"externalReconciliationId": "RECON_EXAMPLE",
									"lines": [
										{
											"amount": { "amount": "100.00", "currency": "EUR" },
											"externalReceiptLineId": "RCPT_LINE_1",
											"externalReceivableId": "REC_EXAMPLE_1",
											"state": "matched"
										}
									],
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"revision": 1,
									"status": "matched",
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentReconciliationResponse"
								}
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"acceptedAt": "2026-10-15T12:30:00.000Z",
									"allocations": [
										{
											"allocatedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_1",
											"matchedAmount": {
												"amount": "100.00",
												"currency": "EUR"
											},
											"unmatchedAmount": { "amount": "0.00", "currency": "EUR" }
										},
										{
											"allocatedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"externalReceivableId": "REC_EXAMPLE_2",
											"matchedAmount": { "amount": "0.00", "currency": "EUR" },
											"unmatchedAmount": {
												"amount": "200.00",
												"currency": "EUR"
											}
										}
									],
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"externalReconciliationId": "RECON_EXAMPLE",
									"lines": [
										{
											"amount": { "amount": "100.00", "currency": "EUR" },
											"externalReceiptLineId": "RCPT_LINE_1",
											"externalReceivableId": "REC_EXAMPLE_1",
											"state": "matched"
										}
									],
									"paymentAmount": { "amount": "300.00", "currency": "EUR" },
									"revision": 1,
									"status": "matched",
									"unappliedAmount": { "amount": "0.00", "currency": "EUR" },
									"unmatchedAmount": { "amount": "200.00", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentReconciliationResponse"
								}
							}
						},
						"description": "Differences resolved; only this restriction cleared.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"financial_event_not_found": {
										"value": {
											"detail": "No reconciliation exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No reconciliation exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/financial_event_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No reconciliation exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"reconciliation_resolution_invalid": {
										"value": {
											"detail": "There is no held difference, or matching evidence does not account for the full allocated amount.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "There is no held difference, or matching evidence does not account for the full allocated amount.",
											"type": "https://docs.paypathiq.com/problems/reconciliation_resolution_invalid"
										}
									},
									"financial_event_conflict": {
										"value": {
											"detail": "The reconciliation was already resolved differently.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The reconciliation was already resolved differently.",
											"type": "https://docs.paypathiq.com/problems/financial_event_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "There is no held difference, or matching evidence does not account for the full allocated amount. The reconciliation was already resolved differently.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Resolve payment reconciliation differences",
				"tags": ["Payment reconciliation"]
			}
		},
		"/v1/clients/{clientCode}/payment-requests/{externalPaymentRequestId}": {
			"get": {
				"description": "Requires payment_requests:read. Returns the request's fixed items and current status. The payment link is never returned again after it is issued; status paid appears only after the payment provider's verified confirmation.",
				"operationId": "getPaymentRequest",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier of this hosted payment request. Reusing it with the identical body is a safe retry; reusing it with a different body conflicts.",
						"in": "path",
						"name": "externalPaymentRequestId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"externalCustomerId": "CUS_EXAMPLE",
									"items": [
										{
											"amount": { "amount": "125.50", "currency": "EUR" },
											"externalReceivableId": "REC_EXAMPLE"
										}
									],
									"createdAt": "2026-10-15T12:00:00Z",
									"expiresAt": "2026-10-15T13:00:00Z",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"revision": 1,
									"paymentUrl": null,
									"status": "open",
									"totalAmount": { "amount": "125.50", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentRequestResponse"
								}
							}
						},
						"description": "Current payment request.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_request_not_found": {
										"value": {
											"detail": "Payment request was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Payment request was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Payment request was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a hosted payment request",
				"tags": ["Payment requests"]
			},
			"put": {
				"description": "Requires payment_requests:write, a scope separate from intake and financial reporting. Creates a fixed-amount, fixed-allocation hosted payment request for one Customer and returns a secret link to the payment page on the Client's verified payment domain, where card details are entered with the Client's payment provider; raw card data never passes through this API. Each amount must equal the Receivable's exact current working balance, the Customer must be liable for every Receivable, and the Client must have an active payment domain and a single active merchant account. The request is rejected before any payment attempt exists when amounts are stale, a Receivable is not payable, the source feed is stale, current policy or a hold prevents a payment request, a payment is already in progress, or the merchant is not configured. Creating a request replaces the Customer's earlier unpaid hosted request. The payer confirms a contact detail held for the Customer before paying. The attempt starts only when the payer submits the hosted page, which re-checks the same balances. Only the provider's verified confirmation marks the request paid and reduces working balances; returning from the hosted page, an unknown outcome or a repeated event never does. Loan connections request loan Receivables and service-charge connections request service-charge demands; the payer page labels each item by its financial type. Creating a request, and each later status change, is announced as payment_request.created or payment_request.updated in the change feed. The link expires after one hour. Exact retries return 200 with a fresh link while the request is open; conflicting reuse returns 409 payment_request_conflict.",
				"operationId": "putPaymentRequest",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier of this hosted payment request. Reusing it with the identical body is a safe retry; reusing it with a different body conflicts.",
						"in": "path",
						"name": "externalPaymentRequestId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"externalCustomerId": "CUS_EXAMPLE",
								"items": [
									{
										"amount": { "amount": "125.50", "currency": "EUR" },
										"externalReceivableId": "REC_EXAMPLE"
									}
								]
							},
							"schema": { "$ref": "#/components/schemas/PaymentRequest" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"externalCustomerId": "CUS_EXAMPLE",
									"items": [
										{
											"amount": { "amount": "125.50", "currency": "EUR" },
											"externalReceivableId": "REC_EXAMPLE"
										}
									],
									"createdAt": "2026-10-15T12:00:00Z",
									"expiresAt": "2026-10-15T13:00:00Z",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"revision": 1,
									"paymentUrl": "https://pay.client.example/payment/EXAMPLE_ONE_TIME_TOKEN",
									"status": "open",
									"totalAmount": { "amount": "125.50", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentRequestResponse"
								}
							}
						},
						"description": "Identical retry of the accepted request.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"externalCustomerId": "CUS_EXAMPLE",
									"items": [
										{
											"amount": { "amount": "125.50", "currency": "EUR" },
											"externalReceivableId": "REC_EXAMPLE"
										}
									],
									"createdAt": "2026-10-15T12:00:00Z",
									"expiresAt": "2026-10-15T13:00:00Z",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE",
									"revision": 1,
									"paymentUrl": "https://pay.client.example/payment/EXAMPLE_ONE_TIME_TOKEN",
									"status": "open",
									"totalAmount": { "amount": "125.50", "currency": "EUR" }
								},
								"schema": {
									"$ref": "#/components/schemas/PaymentRequestResponse"
								}
							}
						},
						"description": "Payment request created; no payment attempt exists yet.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"dependency_missing": {
										"value": {
											"detail": "The Customer or a Receivable is missing from the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Customer or a Receivable is missing from the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"payment_attempt_in_progress": {
										"value": {
											"detail": "A payment attempt is already in progress for one of the Receivables.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A payment attempt is already in progress for one of the Receivables.",
											"type": "https://docs.paypathiq.com/problems/payment_attempt_in_progress"
										}
									},
									"payment_merchant_unconfigured": {
										"value": {
											"detail": "The Client has no active payment domain and single active merchant for this environment, or hosted payments are not enabled.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Client has no active payment domain and single active merchant for this environment, or hosted payments are not enabled.",
											"type": "https://docs.paypathiq.com/problems/payment_merchant_unconfigured"
										}
									},
									"payment_request_conflict": {
										"value": {
											"detail": "This identity already has a different payment request.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This identity already has a different payment request.",
											"type": "https://docs.paypathiq.com/problems/payment_request_conflict"
										}
									},
									"payment_request_held": {
										"value": {
											"detail": "Current policy, a Dispute, a restriction, a reconciliation hold or stale source evidence prevents new payment initiation.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Current policy, a Dispute, a restriction, a reconciliation hold or stale source evidence prevents new payment initiation.",
											"type": "https://docs.paypathiq.com/problems/payment_request_held"
										}
									},
									"payment_request_not_payable": {
										"value": {
											"detail": "The Customer is not liable, a Receivable is not payable now, or the Customer cannot verify a payment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Customer is not liable, a Receivable is not payable now, or the Customer cannot verify a payment.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_payable"
										}
									},
									"payment_request_stale": {
										"value": {
											"detail": "An amount no longer equals the current working balance.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "An amount no longer equals the current working balance.",
											"type": "https://docs.paypathiq.com/problems/payment_request_stale"
										}
									},
									"payment_request_unsupported": {
										"value": {
											"detail": "The connection's industry profile does not match the Client's type, so hosted payment requests are unavailable.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The connection's industry profile does not match the Client's type, so hosted payment requests are unavailable.",
											"type": "https://docs.paypathiq.com/problems/payment_request_unsupported"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Customer or a Receivable is missing from the authorized scope. A payment attempt is already in progress for one of the Receivables. The Client has no active payment domain and single active merchant for this environment, or hosted payments are not enabled. This identity already has a different payment request. Current policy, a Dispute, a restriction, a reconciliation hold or stale source evidence prevents new payment initiation. The Customer is not liable, a Receivable is not payable now, or the Customer cannot verify a payment. An amount no longer equals the current working balance. The connection's industry profile does not match the Client's type, so hosted payment requests are unavailable.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Create a hosted payment request",
				"tags": ["Payment requests"]
			}
		},
		"/v1/clients/{clientCode}/payment-requests/{externalPaymentRequestId}/receipt-delivery": {
			"get": {
				"description": "Requires payment_requests:read. Returns the connection's declared receipt delivery owner, what PayPathIQ can deliver today, every delivery attempt and, separately, the accounting acknowledgement derived from Source receipt lines. Delivery and acknowledgement are independent facts: a submission or an exported file never acknowledges a Payment.",
				"operationId": "getReceiptDelivery",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier of this hosted payment request. Reusing it with the identical body is a safe retry; reusing it with a different body conflicts.",
						"in": "path",
						"name": "externalPaymentRequestId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acknowledgement": {
										"allocatedAmount": {
											"amount": "300.00",
											"currency": "EUR"
										},
										"matchedAmount": { "amount": "0.00", "currency": "EUR" },
										"status": "pending",
										"unmatchedAmount": { "amount": "300.00", "currency": "EUR" }
									},
									"capability": {
										"disabledReason": "no_verified_route",
										"state": "disabled",
										"unverifiedRoutes": [
											{
												"missingProof": "Blockman documents read endpoints only; no receipt-posting endpoint is verified.",
												"route": "blockman_receipt_posting"
											}
										]
									},
									"deliveryOwner": "paypathiq",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE"
								},
								"schema": {
									"$ref": "#/components/schemas/ReceiptDeliveryResponse"
								}
							}
						},
						"description": "Delivery state and acknowledgement.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_request_not_found": {
										"value": {
											"detail": "No Payment request exists at this authorized reference.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No Payment request exists at this authorized reference.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No Payment request exists at this authorized reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_not_confirmed": {
										"value": {
											"detail": "The Payment request has no provider-confirmed Payment to deliver.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Payment request has no provider-confirmed Payment to deliver.",
											"type": "https://docs.paypathiq.com/problems/payment_not_confirmed"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Payment request has no provider-confirmed Payment to deliver.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get receipt delivery and acknowledgement",
				"tags": ["Receipt delivery"]
			},
			"put": {
				"description": "Requires payment_requests:write. Asks PayPathIQ to deliver the receipt of a confirmed Payment to the Client's accounting Source. Only the connection's declared delivery owner may post: a partner-owned connection is refused. Blockman, a Blockman transaction CSV and Xero payment write-back are disabled because no receipt-posting endpoint or import format is verified, so this operation returns receipt_delivery_route_unsupported and records nothing. Where a verified route is enabled, every attempt is recorded with a stable delivery reference; the vendor's acceptance leaves the acknowledgement pending until exact receipt lines are reconciled. A rejected attempt may be retried with the same reference. An ambiguous outcome is never retried until exact receipt evidence acknowledges the Payment. Delivery state changes are announced as receipt_delivery.created or receipt_delivery.updated in the change feed.",
				"operationId": "putReceiptDelivery",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier of this hosted payment request. Reusing it with the identical body is a safe retry; reusing it with a different body conflicts.",
						"in": "path",
						"name": "externalPaymentRequestId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {},
							"schema": { "$ref": "#/components/schemas/ReceiptDelivery" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"acknowledgement": {
										"allocatedAmount": {
											"amount": "300.00",
											"currency": "EUR"
										},
										"matchedAmount": { "amount": "0.00", "currency": "EUR" },
										"status": "pending",
										"unmatchedAmount": { "amount": "300.00", "currency": "EUR" }
									},
									"capability": {
										"disabledReason": "no_verified_route",
										"state": "disabled",
										"unverifiedRoutes": [
											{
												"missingProof": "Blockman documents read endpoints only; no receipt-posting endpoint is verified.",
												"route": "blockman_receipt_posting"
											}
										]
									},
									"deliveryOwner": "paypathiq",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE"
								},
								"schema": {
									"$ref": "#/components/schemas/ReceiptDeliveryResponse"
								}
							}
						},
						"description": "Current delivery state; no new attempt was needed or the attempt did not create the delivery.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"acknowledgement": {
										"allocatedAmount": {
											"amount": "300.00",
											"currency": "EUR"
										},
										"matchedAmount": { "amount": "0.00", "currency": "EUR" },
										"status": "pending",
										"unmatchedAmount": { "amount": "300.00", "currency": "EUR" }
									},
									"capability": {
										"disabledReason": "no_verified_route",
										"state": "disabled",
										"unverifiedRoutes": [
											{
												"missingProof": "Blockman documents read endpoints only; no receipt-posting endpoint is verified.",
												"route": "blockman_receipt_posting"
											}
										]
									},
									"deliveryOwner": "paypathiq",
									"externalPaymentRequestId": "PAYREQ_EXAMPLE"
								},
								"schema": {
									"$ref": "#/components/schemas/ReceiptDeliveryResponse"
								}
							}
						},
						"description": "Delivery created and attempted.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_request_not_found": {
										"value": {
											"detail": "No Payment request exists at this authorized reference.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No Payment request exists at this authorized reference.",
											"type": "https://docs.paypathiq.com/problems/payment_request_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No Payment request exists at this authorized reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"payment_not_confirmed": {
										"value": {
											"detail": "The Payment request has no provider-confirmed Payment to deliver.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Payment request has no provider-confirmed Payment to deliver.",
											"type": "https://docs.paypathiq.com/problems/payment_not_confirmed"
										}
									},
									"receipt_delivery_changed": {
										"value": {
											"detail": "The Payment's allocations changed after the delivery reference was issued.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Payment's allocations changed after the delivery reference was issued.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_changed"
										}
									},
									"receipt_delivery_outcome_ambiguous": {
										"value": {
											"detail": "A previous attempt has an unknown outcome; only exact receipt evidence can resolve it.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A previous attempt has an unknown outcome; only exact receipt evidence can resolve it.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_outcome_ambiguous"
										}
									},
									"receipt_delivery_owned_by_partner": {
										"value": {
											"detail": "The connection's declared receipt delivery owner is the partner.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The connection's declared receipt delivery owner is the partner.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_owned_by_partner"
										}
									},
									"receipt_delivery_route_unsupported": {
										"value": {
											"detail": "No verified vendor route is enabled for this connection.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "No verified vendor route is enabled for this connection.",
											"type": "https://docs.paypathiq.com/problems/receipt_delivery_route_unsupported"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Payment request has no provider-confirmed Payment to deliver. The Payment's allocations changed after the delivery reference was issued. A previous attempt has an unknown outcome; only exact receipt evidence can resolve it. The connection's declared receipt delivery owner is the partner. No verified vendor route is enabled for this connection.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Deliver a receipt to the accounting Source",
				"tags": ["Receipt delivery"]
			}
		},
		"/v1/clients/{clientCode}/receivables/{externalReceivableId}": {
			"get": {
				"description": "Requires receivables:read. Returns the calling Integration's current Receivable representation without staff corrections, internal projection or workflow identifiers.",
				"operationId": "getReceivable",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Current Receivable representation.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a Receivable",
				"tags": ["Receivables"]
			},
			"patch": {
				"description": "Requires receivables:write. Applies RFC 7396 JSON Merge Patch, then validates the complete closed Receivable before one transactional projection. Exactly one responsible Customer must be primary, Customer IDs must be unique, and any balance breakdown must sum to recoverableAmount. Changed descriptions require a newer sourceRevision. Financial balances and obligation types cannot be overwritten by descriptive updates. See https://docs.paypathiq.com/errors-and-retries#retry-policy.",
				"operationId": "patchReceivable",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/merge-patch+json": {
							"example": {
								"sourceRevision": 2,
								"sourceReference": "updated-source-reference"
							},
							"schema": { "$ref": "#/components/schemas/ReceivableMergePatch" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Receivable updated, or patch was a safe no-op.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable must exist before it can be patched.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable must exist before it can be patched.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable must exist before it can be patched.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"source_revision_conflict": {
										"value": {
											"detail": "Changed representations require a newer source revision.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Changed representations require a newer source revision.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"financial_operation_required": {
										"value": {
											"detail": "Financial balances and obligation types require explicit financial operations.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Financial balances and obligation types require explicit financial operations.",
											"type": "https://docs.paypathiq.com/problems/financial_operation_required"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "A referenced Customer does not exist in this Integration and Client scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A referenced Customer does not exist in this Integration and Client scope.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"receivable_state_conflict": {
										"value": {
											"detail": "The requested change conflicts with current Receivable state.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The requested change conflicts with current Receivable state.",
											"type": "https://docs.paypathiq.com/problems/receivable_state_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Changed representations require a newer source revision. Financial balances and obligation types require explicit financial operations. A referenced Customer does not exist in this Integration and Client scope. The requested change conflicts with current Receivable state.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "One or more fields are invalid.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "One or more fields are invalid.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									},
									"profile_mismatch": {
										"value": {
											"detail": "The obligation must match the connection industry profile.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "The obligation must match the connection industry profile.",
											"type": "https://docs.paypathiq.com/problems/profile_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "One or more fields are invalid. The obligation must match the connection industry profile.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Update selected Receivable fields",
				"tags": ["Receivables"]
			},
			"put": {
				"description": "Requires receivables:write. Creates one Receivable or replaces its descriptive fields with a newer sourceRevision. Exactly one responsible Customer must be primary, Customer IDs must be unique, and any balance breakdown must sum to recoverableAmount. Financial balance/type replacement and stale revisions are rejected. Descriptive updates preserve the working financial position. Lifecycle status changes through explicit commands. Identical accepted retries are safe. See https://docs.paypathiq.com/errors-and-retries#retry-policy.",
				"operationId": "putReceivable",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"financialType": "loan_balance",
								"sourceRevision": 1,
								"balanceBreakdown": {
									"costs": { "amount": "0.00", "currency": "EUR" },
									"fees": { "amount": "50.00", "currency": "EUR" },
									"interest": { "amount": "200.00", "currency": "EUR" },
									"principal": { "amount": "1000.00", "currency": "EUR" }
								},
								"creditUnion": {
									"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
									"contractualInstalment": {
										"amount": { "amount": "125.00", "currency": "EUR" },
										"frequency": "monthly"
									},
									"defaultDate": "2026-07-01",
									"loanAccountReference": "loan-ref-example",
									"loanType": "personal_loan",
									"totalOutstandingAmount": {
										"amount": "4000.00",
										"currency": "EUR"
									}
								},
								"dueDate": "2026-08-01",
								"recoverableAmount": { "amount": "1250.00", "currency": "EUR" },
								"responsibleCustomers": [
									{ "externalCustomerId": "CUS_123", "role": "primary" }
								],
								"sourceReference": "receivable-ref-example"
							},
							"schema": { "$ref": "#/components/schemas/Receivable" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Receivable replaced, or request was an identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Receivable created and projected synchronously.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"source_revision_conflict": {
										"value": {
											"detail": "Changed representations require a newer source revision.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Changed representations require a newer source revision.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"financial_operation_required": {
										"value": {
											"detail": "Financial balances and obligation types require explicit financial operations.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Financial balances and obligation types require explicit financial operations.",
											"type": "https://docs.paypathiq.com/problems/financial_operation_required"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "A referenced Customer does not exist in this Integration and Client scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "A referenced Customer does not exist in this Integration and Client scope.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									},
									"receivable_state_conflict": {
										"value": {
											"detail": "The requested change conflicts with current state or overlaps another Source obligation.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The requested change conflicts with current state or overlaps another Source obligation.",
											"type": "https://docs.paypathiq.com/problems/receivable_state_conflict"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Changed representations require a newer source revision. Financial balances and obligation types require explicit financial operations. A referenced Customer does not exist in this Integration and Client scope. The requested change conflicts with current state or overlaps another Source obligation.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "One or more fields are invalid.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "One or more fields are invalid.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									},
									"profile_mismatch": {
										"value": {
											"detail": "The obligation must match the connection industry profile.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "The obligation must match the connection industry profile.",
											"type": "https://docs.paypathiq.com/problems/profile_mismatch"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "One or more fields are invalid. The obligation must match the connection industry profile.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Create or replace a Receivable",
				"tags": ["Receivables"]
			}
		},
		"/v1/clients/{clientCode}/receivables/{externalReceivableId}/clear-pause": {
			"post": {
				"description": "Requires receivables:write. Clears only the calling Integration's active pause and never resumes recovery automatically. If the response is lost, GET the Receivable before deciding whether another command is needed.",
				"operationId": "clearReceivablePause",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": { "effectiveAt": "2026-08-29T12:00:00Z" },
							"schema": {
								"$ref": "#/components/schemas/ClearPauseReceivableCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Lifecycle command applied. If the response is lost, read the Receivable before deciding whether to send another lifecycle command.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"pause_not_active": {
										"value": {
											"detail": "No active source pause exists to clear.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "No active source pause exists to clear.",
											"type": "https://docs.paypathiq.com/problems/pause_not_active"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No active source pause exists to clear.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Clear a Receivable pause",
				"tags": ["Receivable lifecycle"]
			}
		},
		"/v1/clients/{clientCode}/receivables/{externalReceivableId}/close": {
			"post": {
				"description": "Requires receivables:write. Closes recovery authority. Payment observations can still be recorded afterwards and correct the closed balance. Closing an already closed Receivable returns 200 with the current representation. If the response is lost, GET the Receivable before deciding whether another command is needed.",
				"operationId": "closeReceivable",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"effectiveAt": "2026-08-29T12:00:00Z",
								"reason": "satisfied"
							},
							"schema": {
								"$ref": "#/components/schemas/CloseReceivableCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Lifecycle command applied. If the response is lost, read the Receivable before deciding whether to send another lifecycle command.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Close a Receivable",
				"tags": ["Receivable lifecycle"]
			}
		},
		"/v1/clients/{clientCode}/receivables/{externalReceivableId}/pause": {
			"post": {
				"description": "Requires receivables:write. Creates a typed source pause without transferring recovery-resume authority to the caller. If the response is lost, GET the Receivable before deciding whether another command is needed.",
				"operationId": "pauseReceivable",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"effectiveAt": "2026-08-29T12:00:00Z",
								"reason": "client_instruction"
							},
							"schema": {
								"$ref": "#/components/schemas/PauseReceivableCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Lifecycle command applied. If the response is lost, read the Receivable before deciding whether to send another lifecycle command.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_receivable_transition": {
										"value": {
											"detail": "Receivable cannot be paused from its current state.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Receivable cannot be paused from its current state.",
											"type": "https://docs.paypathiq.com/problems/invalid_receivable_transition"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable cannot be paused from its current state.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Pause a Receivable",
				"tags": ["Receivable lifecycle"]
			}
		},
		"/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen": {
			"post": {
				"description": "Requires receivables:write. Reopens a closed Receivable but never resumes recovery automation automatically. If the response is lost, GET the Receivable before deciding whether another command is needed.",
				"operationId": "reopenReceivable",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque Receivable identifier supplied by the Integration; capitalization must match.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": { "effectiveAt": "2026-08-29T12:00:00Z" },
							"schema": {
								"$ref": "#/components/schemas/ReopenReceivableCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"financialType": "loan_balance",
									"sourceRevision": 1,
									"balanceBreakdown": {
										"costs": { "amount": "0.00", "currency": "EUR" },
										"fees": { "amount": "50.00", "currency": "EUR" },
										"interest": { "amount": "200.00", "currency": "EUR" },
										"principal": { "amount": "1000.00", "currency": "EUR" }
									},
									"creditUnion": {
										"arrearsAmount": { "amount": "1250.00", "currency": "EUR" },
										"contractualInstalment": {
											"amount": { "amount": "125.00", "currency": "EUR" },
											"frequency": "monthly"
										},
										"defaultDate": "2026-07-01",
										"loanAccountReference": "loan-ref-example",
										"loanType": "personal_loan",
										"totalOutstandingAmount": {
											"amount": "4000.00",
											"currency": "EUR"
										}
									},
									"dueDate": "2026-08-01",
									"recoverableAmount": {
										"amount": "1250.00",
										"currency": "EUR"
									},
									"responsibleCustomers": [
										{ "externalCustomerId": "CUS_123", "role": "primary" }
									],
									"sourceReference": "receivable-ref-example",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "1250.00", "currency": "EUR" },
										"workingAmount": { "amount": "1250.00", "currency": "EUR" }
									},
									"externalReceivableId": "REC_123",
									"status": "active",
									"updatedAt": "2026-08-29T12:00:00Z"
								},
								"schema": { "$ref": "#/components/schemas/ReceivableResponse" }
							}
						},
						"description": "Lifecycle command applied. If the response is lost, read the Receivable before deciding whether to send another lifecycle command.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_receivable_transition": {
										"value": {
											"detail": "Receivable cannot be reopened from its current state.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Receivable cannot be reopened from its current state.",
											"type": "https://docs.paypathiq.com/problems/invalid_receivable_transition"
										}
									},
									"positive_recoverable_amount_required": {
										"value": {
											"detail": "Receivable requires a positive current Recoverable amount before reopening.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "Receivable requires a positive current Recoverable amount before reopening.",
											"type": "https://docs.paypathiq.com/problems/positive_recoverable_amount_required"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable cannot be reopened from its current state. Receivable requires a positive current Recoverable amount before reopening.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Reopen a Receivable",
				"tags": ["Receivable lifecycle"]
			}
		},
		"/v1/clients/{clientCode}/collection-summaries": {
			"get": {
				"description": "Requires collection_summaries:read. Returns collection summaries for the Receivables this connection may see, ordered by externalReceivableId, with a cursor for the next page. Each summary has the same shape and exclusions as the single read. Summaries reflect committed state at read time, so a financial or recovery change made between pages appears on whichever page reads that Receivable afterwards.",
				"operationId": "listCollectionSummaries",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Opaque cursor from a previous response's nextCursor. Omit it to read from the first Receivable.",
						"in": "query",
						"name": "cursor",
						"required": false,
						"schema": { "maxLength": 200, "minLength": 1, "type": "string" }
					},
					{
						"description": "Maximum summaries to return, from 1 to 50. Defaults to 25.",
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": { "maximum": 50, "minimum": 1, "type": "integer" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"data": [
										{
											"actions": [
												{
													"channel": "message",
													"executedAt": "2026-10-14T10:02:00Z",
													"origin": "automatic",
													"status": "completed"
												}
											],
											"commitments": [
												{
													"amount": { "amount": "50.00", "currency": "EUR" },
													"arrangementTotal": {
														"amount": "200.00",
														"currency": "EUR"
													},
													"dueAt": "2026-10-31T00:00:00Z",
													"frequency": "monthly",
													"instalmentsPaid": 1,
													"kind": "payment_plan",
													"nextInstalment": {
														"amount": { "amount": "50.00", "currency": "EUR" },
														"dueAt": "2026-10-31T00:00:00Z"
													},
													"status": "active",
													"totalInstalments": 4
												}
											],
											"externalReceivableId": "LOAN_5521_INST_07",
											"financialPosition": {
												"confirmedUnreconciledAmount": {
													"amount": "40.00",
													"currency": "EUR"
												},
												"receiptAcknowledgedAmount": {
													"amount": "0.00",
													"currency": "EUR"
												},
												"sourceAmount": {
													"amount": "140.00",
													"currency": "EUR"
												},
												"workingAmount": {
													"amount": "100.00",
													"currency": "EUR"
												}
											},
											"financialType": "loan_instalment",
											"payment": { "holds": [], "initiationHeld": false },
											"reconciliation": { "status": "pending_accounting" },
											"recovery": {
												"entryMode": "explicit_instruction",
												"held": false,
												"holds": [],
												"state": "eligible"
											}
										}
									],
									"hasMore": false,
									"nextCursor": null
								},
								"schema": {
									"$ref": "#/components/schemas/CollectionSummaryListResponse"
								}
							}
						},
						"description": "A page of collection summaries.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "List collection summaries",
				"tags": ["Collection summaries"]
			}
		},
		"/v1/clients/{clientCode}/collection-summaries/{externalReceivableId}": {
			"get": {
				"description": "Requires collection_summaries:read, a scope separate from intake, corrections, recovery and Payment initiation. Returns the Receivable's working collection position, separate from its Source representation: source and working amounts, confirmed amounts awaiting accounting, reconciliation status, current recovery and Payment holds, authorized promise-to-pay and Payment-plan summaries, and recent action outcomes. Staff notes, protected data, message content and provider responses are never included. A commitment appears only when every Receivable it covers belongs to this connection. Only Receivables placed by this connection's own grant are visible, and a revoked or changed grant stops access immediately. Reads are informational: they never start, resume or clear recovery, and each recovery or Payment action checks every control again when it is attempted. Reading does not count as fresh Source evidence.",
				"operationId": "getCollectionSummary",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "The Source's identifier of the Receivable, as used when it was placed.",
						"in": "path",
						"name": "externalReceivableId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"actions": [
										{
											"channel": "message",
											"executedAt": "2026-10-14T10:02:00Z",
											"origin": "automatic",
											"status": "completed"
										}
									],
									"commitments": [
										{
											"amount": { "amount": "50.00", "currency": "EUR" },
											"arrangementTotal": {
												"amount": "200.00",
												"currency": "EUR"
											},
											"dueAt": "2026-10-31T00:00:00Z",
											"frequency": "monthly",
											"instalmentsPaid": 1,
											"kind": "payment_plan",
											"nextInstalment": {
												"amount": { "amount": "50.00", "currency": "EUR" },
												"dueAt": "2026-10-31T00:00:00Z"
											},
											"status": "active",
											"totalInstalments": 4
										}
									],
									"externalReceivableId": "LOAN_5521_INST_07",
									"financialPosition": {
										"confirmedUnreconciledAmount": {
											"amount": "40.00",
											"currency": "EUR"
										},
										"receiptAcknowledgedAmount": {
											"amount": "0.00",
											"currency": "EUR"
										},
										"sourceAmount": { "amount": "140.00", "currency": "EUR" },
										"workingAmount": { "amount": "100.00", "currency": "EUR" }
									},
									"financialType": "loan_instalment",
									"payment": { "holds": [], "initiationHeld": false },
									"reconciliation": { "status": "pending_accounting" },
									"recovery": {
										"entryMode": "explicit_instruction",
										"held": false,
										"holds": [],
										"state": "eligible"
									}
								},
								"schema": { "$ref": "#/components/schemas/CollectionSummary" }
							}
						},
						"description": "Current collection summary for the Receivable.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"receivable_not_found": {
										"value": {
											"detail": "Receivable was not found within the authorized scope.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "Receivable was not found within the authorized scope.",
											"type": "https://docs.paypathiq.com/problems/receivable_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Receivable was not found within the authorized scope.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a collection summary",
				"tags": ["Collection summaries"]
			}
		},
		"/v1/clients/{clientCode}/recovery-instructions/{externalInstructionId}": {
			"get": {
				"description": "Requires recovery_instructions:read. Returns the accepted instruction, its state and the closed categories of holds currently preventing recovery.",
				"operationId": "getRecoveryInstruction",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier of this recovery instruction. One instruction governs one Receivable.",
						"in": "path",
						"name": "externalInstructionId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"effectiveAt": "2026-10-15T09:00:00Z",
									"externalInstructionId": "RI_2026_000184",
									"holds": [],
									"recordedAt": "2026-10-15T09:00:04Z",
									"recoveryEntryMode": "explicit_instruction",
									"recoveryHeld": false,
									"revision": 1,
									"scope": {
										"externalReceivableId": "LOAN_5521_INST_07",
										"type": "receivable"
									},
									"state": "authorized"
								},
								"schema": {
									"$ref": "#/components/schemas/RecoveryInstructionResponse"
								}
							}
						},
						"description": "Accepted recovery instruction.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"recovery_instruction_not_found": {
										"value": {
											"detail": "No instruction exists at this authorized resource URL.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No instruction exists at this authorized resource URL.",
											"type": "https://docs.paypathiq.com/problems/recovery_instruction_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No instruction exists at this authorized resource URL.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get a recovery instruction",
				"tags": ["Recovery instructions"]
			},
			"put": {
				"description": "Requires recovery_instructions:write, a scope separate from receivables:write. Available only to a connection whose recovery entry mode is explicit_instruction; a connection using approved_rules receives recovery_mode_mismatch. Importing or updating a Receivable never starts recovery: an authorized instruction lets PayPathIQ begin recovery for that one Receivable, still subject to current source restrictions, Disputes, source freshness, collection activation and every other protection, all checked again when each action is attempted. An authorized instruction cannot be accepted while the Source holds a restriction or Dispute on the Receivable or its Customers. If the Source later raises one, the instruction becomes suspended and a new revision is required; clearing the restriction alone never resumes recovery. A withdrawn instruction holds recovery again. Revisions start at 1 and increase by exactly 1. An identical retry returns 200 and changes nothing.",
				"operationId": "putRecoveryInstruction",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					},
					{
						"description": "Caller-assigned, opaque identifier of this recovery instruction. One instruction governs one Receivable.",
						"in": "path",
						"name": "externalInstructionId",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {
								"effectiveAt": "2026-10-15T09:00:00Z",
								"revision": 1,
								"scope": {
									"externalReceivableId": "LOAN_5521_INST_07",
									"type": "receivable"
								},
								"state": "authorized"
							},
							"schema": { "$ref": "#/components/schemas/RecoveryInstruction" }
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"effectiveAt": "2026-10-15T09:00:00Z",
									"externalInstructionId": "RI_2026_000184",
									"holds": [],
									"recordedAt": "2026-10-15T09:00:04Z",
									"recoveryEntryMode": "explicit_instruction",
									"recoveryHeld": false,
									"revision": 1,
									"scope": {
										"externalReceivableId": "LOAN_5521_INST_07",
										"type": "receivable"
									},
									"state": "authorized"
								},
								"schema": {
									"$ref": "#/components/schemas/RecoveryInstructionResponse"
								}
							}
						},
						"description": "Identical safe retry.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"effectiveAt": "2026-10-15T09:00:00Z",
									"externalInstructionId": "RI_2026_000184",
									"holds": [],
									"recordedAt": "2026-10-15T09:00:04Z",
									"recoveryEntryMode": "explicit_instruction",
									"recoveryHeld": false,
									"revision": 1,
									"scope": {
										"externalReceivableId": "LOAN_5521_INST_07",
										"type": "receivable"
									},
									"state": "authorized"
								},
								"schema": {
									"$ref": "#/components/schemas/RecoveryInstructionResponse"
								}
							}
						},
						"description": "Instruction, its effect on recovery entry and audit evidence committed atomically.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"409": {
						"content": {
							"application/problem+json": {
								"examples": {
									"recovery_mode_mismatch": {
										"value": {
											"detail": "This connection declares approved_rules recovery entry, so instructions are not accepted.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "This connection declares approved_rules recovery entry, so instructions are not accepted.",
											"type": "https://docs.paypathiq.com/problems/recovery_mode_mismatch"
										}
									},
									"recovery_instruction_conflict": {
										"value": {
											"detail": "The identity already governs a different Receivable, or the Receivable is governed by a different instruction.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The identity already governs a different Receivable, or the Receivable is governed by a different instruction.",
											"type": "https://docs.paypathiq.com/problems/recovery_instruction_conflict"
										}
									},
									"recovery_restriction_active": {
										"value": {
											"detail": "The Source holds a restriction or Dispute on the Receivable or its Customers, so recovery cannot be authorized.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Source holds a restriction or Dispute on the Receivable or its Customers, so recovery cannot be authorized.",
											"type": "https://docs.paypathiq.com/problems/recovery_restriction_active"
										}
									},
									"source_revision_conflict": {
										"value": {
											"detail": "The revision is not exactly one more than the accepted revision, or the same revision carries different content.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The revision is not exactly one more than the accepted revision, or the same revision carries different content.",
											"type": "https://docs.paypathiq.com/problems/source_revision_conflict"
										}
									},
									"dependency_missing": {
										"value": {
											"detail": "The Receivable must already exist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 409,
											"title": "The Receivable must already exist.",
											"type": "https://docs.paypathiq.com/problems/dependency_missing"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "This connection declares approved_rules recovery entry, so instructions are not accepted. The identity already governs a different Receivable, or the Receivable is governed by a different instruction. The Source holds a restriction or Dispute on the Receivable or its Customers, so recovery cannot be authorized. The revision is not exactly one more than the accepted revision, or the same revision carries different content. The Receivable must already exist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Record a recovery instruction",
				"tags": ["Recovery instructions"]
			}
		},
		"/v1/clients/{clientCode}/source-freshness": {
			"get": {
				"description": "Requires receivables:read. Reports whether this connection's accepted source evidence is within its approved freshness limit. A stale connection holds recovery actions and new payment initiation for its Receivables, evaluated when each action is attempted. Source updates, payment observations, financial corrections, confirmed provider results and reconciliation evidence are still accepted while stale, and other connections are unaffected. Any accepted source write counts as fresh evidence and clears only the freshness hold, never a Dispute, source restriction or other protection.",
				"operationId": "getSourceFreshness",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"basis": "Nightly core-banking export plus a 12 hour tolerance",
									"evaluatedAt": "2026-10-15T12:00:00Z",
									"heldReason": null,
									"lastEvidenceAt": "2026-10-15T02:15:00Z",
									"limitSeconds": 129600,
									"paymentInitiationHeld": false,
									"recoveryHeld": false,
									"staleAt": "2026-10-16T14:15:00Z",
									"state": "fresh"
								},
								"schema": {
									"$ref": "#/components/schemas/SourceFreshnessResponse"
								}
							}
						},
						"description": "Current freshness of this connection's source evidence.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get source freshness",
				"tags": ["Source freshness"]
			}
		},
		"/v1/clients/{clientCode}/webhook-endpoint": {
			"get": {
				"description": "Requires webhooks:manage. Returns the destination, delivery status and signing-secret version. The signing secret is never returned again after it is issued.",
				"operationId": "getWebhookEndpoint",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"disabledReason": null,
									"secretVersion": 1,
									"status": "active",
									"url": "https://hooks.example.com/paypathiq"
								},
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointResponse"
								}
							}
						},
						"description": "The configured webhook endpoint.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"webhook_endpoint_not_found": {
										"value": {
											"detail": "No webhook endpoint is configured for this Client.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No webhook endpoint is configured for this Client.",
											"type": "https://docs.paypathiq.com/problems/webhook_endpoint_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No webhook endpoint is configured for this Client.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Get the webhook endpoint",
				"tags": ["Webhooks"]
			},
			"put": {
				"description": "Requires webhooks:manage. Configures the single HTTPS destination that receives minimal, signed change notifications for this Client, or replaces it and re-enables a disabled endpoint. The first call returns 201 with the signing secret, shown once; later calls return 200 without it (rotate to obtain a new one). PayPathIQ resolves the hostname and rejects non-public destinations (private, loopback, link-local and reserved addresses), non-HTTPS URLs, ports other than 443, embedded credentials and IP-literal hosts; it repeats these checks before every delivery attempt and disables the endpoint when one fails. Notifications cover changes committed after configuration; use the change feed to recover anything missed.",
				"operationId": "configureWebhookEndpoint",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": { "url": "https://hooks.example.com/paypathiq" },
							"schema": {
								"$ref": "#/components/schemas/ConfigureWebhookEndpointCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"disabledReason": null,
									"secretVersion": 1,
									"status": "active",
									"url": "https://hooks.example.com/paypathiq"
								},
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointResponse"
								}
							}
						},
						"description": "The endpoint was updated. No signing secret is returned.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"201": {
						"content": {
							"application/json": {
								"example": {
									"disabledReason": null,
									"secretVersion": 1,
									"signingSecret": "whsec_example_issued_once",
									"status": "active",
									"url": "https://hooks.example.com/paypathiq"
								},
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointResponse"
								}
							}
						},
						"description": "The endpoint was created. The response carries the signing secret once.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Location": {
								"description": "Canonical URL of the created Integration-facing resource.",
								"schema": { "format": "uri", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									},
									"webhook_destination_unsafe": {
										"value": {
											"detail": "The URL is not HTTPS on port 443 with a public DNS name, or its hostname resolves to a non-public address.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "The URL is not HTTPS on port 443 with a public DNS name, or its hostname resolves to a non-public address.",
											"type": "https://docs.paypathiq.com/problems/webhook_destination_unsafe"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference. The URL is not HTTPS on port 443 with a public DNS name, or its hostname resolves to a non-public address.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Configure the webhook endpoint",
				"tags": ["Webhooks"]
			}
		},
		"/v1/clients/{clientCode}/webhook-endpoint/disable": {
			"post": {
				"description": "Requires webhooks:manage. Stops notifications and cancels deliveries that have not been sent. Configure the endpoint again to resume; changes made while disabled are recovered through the change feed. Disabling a disabled endpoint returns 200.",
				"operationId": "disableWebhookEndpoint",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {},
							"schema": {
								"$ref": "#/components/schemas/DisableWebhookEndpointCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"disabledReason": "client_disabled",
									"secretVersion": 1,
									"status": "disabled",
									"url": "https://hooks.example.com/paypathiq"
								},
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointResponse"
								}
							}
						},
						"description": "The endpoint is disabled.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"webhook_endpoint_not_found": {
										"value": {
											"detail": "No webhook endpoint is configured for this Client.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No webhook endpoint is configured for this Client.",
											"type": "https://docs.paypathiq.com/problems/webhook_endpoint_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No webhook endpoint is configured for this Client.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Disable the webhook endpoint",
				"tags": ["Webhooks"]
			}
		},
		"/v1/clients/{clientCode}/webhook-endpoint/rotate-secret": {
			"post": {
				"description": "Requires webhooks:manage. Issues a new signing secret, returned once. For 24 hours each notification carries signatures for both the new and the previous secret, so you can deploy the new secret before the old one stops being signed.",
				"operationId": "rotateWebhookSecret",
				"parameters": [
					{
						"description": "Stable non-sensitive Client code authorized by the Integration grant.",
						"in": "path",
						"name": "clientCode",
						"required": true,
						"schema": { "$ref": "#/components/schemas/ExternalResourceId" }
					}
				],
				"requestBody": {
					"description": "One uncompressed resource representation, limited to 256 KiB.",
					"content": {
						"application/json": {
							"example": {},
							"schema": {
								"$ref": "#/components/schemas/RotateWebhookSecretCommand"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"example": {
									"disabledReason": null,
									"secretVersion": 2,
									"signingSecret": "whsec_example_issued_once",
									"status": "active",
									"url": "https://hooks.example.com/paypathiq"
								},
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointResponse"
								}
							}
						},
						"description": "The new signing secret, shown once.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"examples": {
									"malformed_json": {
										"value": {
											"detail": "Request body is not valid JSON.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 400,
											"title": "Request body is not valid JSON.",
											"type": "https://docs.paypathiq.com/problems/malformed_json"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body is not valid JSON.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"401": {
						"content": {
							"application/problem+json": {
								"examples": {
									"invalid_api_key": {
										"value": {
											"detail": "API key is invalid, inactive, revoked, or for another environment.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 401,
											"title": "API key is invalid, inactive, revoked, or for another environment.",
											"type": "https://docs.paypathiq.com/problems/invalid_api_key"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "API key is invalid, inactive, revoked, or for another environment.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"403": {
						"content": {
							"application/problem+json": {
								"examples": {
									"client_scope_denied": {
										"value": {
											"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 403,
											"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
											"type": "https://docs.paypathiq.com/problems/client_scope_denied"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"404": {
						"content": {
							"application/problem+json": {
								"examples": {
									"webhook_endpoint_not_found": {
										"value": {
											"detail": "No webhook endpoint is configured for this Client.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 404,
											"title": "No webhook endpoint is configured for this Client.",
											"type": "https://docs.paypathiq.com/problems/webhook_endpoint_not_found"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "No webhook endpoint is configured for this Client.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"413": {
						"content": {
							"application/problem+json": {
								"examples": {
									"request_too_large": {
										"value": {
											"detail": "Request body exceeds the 256 KiB resource limit.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 413,
											"title": "Request body exceeds the 256 KiB resource limit.",
											"type": "https://docs.paypathiq.com/problems/request_too_large"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Request body exceeds the 256 KiB resource limit.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"415": {
						"content": {
							"application/problem+json": {
								"examples": {
									"unsupported_media_type": {
										"value": {
											"detail": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 415,
											"title": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
											"type": "https://docs.paypathiq.com/problems/unsupported_media_type"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Media type or content encoding is unsupported. Send uncompressed application/json for PUT and POST, and application/merge-patch+json for PATCH.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"422": {
						"content": {
							"application/problem+json": {
								"examples": {
									"validation_error": {
										"value": {
											"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"errors": [
												{
													"code": "invalid_format",
													"detail": "Invalid ISO date",
													"pointer": "/dueDate"
												}
											],
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 422,
											"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
											"type": "https://docs.paypathiq.com/problems/validation_error"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"examples": {
									"rate_limit_exceeded": {
										"value": {
											"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 429,
											"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
											"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							},
							"Retry-After": {
								"description": "Seconds until this unchanged request may be retried: 1 after a concurrency rejection, 60 after the per-minute limit.",
								"schema": { "minimum": 1, "type": "integer" }
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"examples": {
									"projection_unavailable": {
										"value": {
											"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"requestId": "29400000-0000-4000-8000-000000000001",
											"status": 503,
											"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
											"type": "https://docs.paypathiq.com/problems/projection_unavailable"
										}
									}
								},
								"schema": { "$ref": "#/components/schemas/Problem" }
							}
						},
						"description": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"PayPathIQ-Api-Version": {
								"description": "Public API contract version; industry profile is fixed by the current Integration grant.",
								"schema": { "const": "v1", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [{ "BearerAuth": [] }],
				"summary": "Rotate the webhook signing secret",
				"tags": ["Webhooks"]
			}
		},
		"/v1/openapi.json": {
			"get": {
				"description": "Returns this OpenAPI 3.1 document. It needs no API key. Download the published JSON at https://docs.paypathiq.com/generated/inbound-api-v1.openapi.json to import it into API tooling.",
				"operationId": "getOpenApiDocument",
				"responses": {
					"200": {
						"content": {
							"application/json": { "schema": { "type": "object" } }
						},
						"description": "The current OpenAPI document.",
						"headers": {
							"Cache-Control": {
								"description": "Integration-facing responses are never cached.",
								"schema": { "const": "no-store", "type": "string" }
							},
							"X-Request-Id": {
								"description": "PayPathIQ-generated support correlation identifier.",
								"schema": { "format": "uuid", "type": "string" }
							}
						}
					}
				},
				"security": [],
				"summary": "Get the OpenAPI document",
				"tags": ["Specification"]
			}
		}
	},
	"security": [{ "BearerAuth": [] }],
	"webhooks": {
		"changeNotification": {
			"post": {
				"description": "PayPathIQ sends this request to your configured endpoint when a Customer or Receivable change commits. It carries only the event identity, type, resource reference and revision: read the resource with your API key for detail. Verify the PayPathIQ-Signature header, which is t=<unix seconds>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' keyed with your signing secret>; during the 24 hours after a rotation it carries a v1 value for each of the current and previous secrets. Reject timestamps more than 5 minutes old. Respond with any 2xx status within 5 seconds. Redirects are not followed. Any other outcome is retried with backoff up to 8 attempts over about two days, then abandoned: recover through the change feed. Delivery is at least once and unordered: discard repeated eventId values and compare revision before applying. Grants, scopes and the destination are re-checked on every attempt; a revoked grant or unsafe destination disables the endpoint.",
				"operationId": "changeNotification",
				"parameters": [
					{
						"description": "Stable identity of the change; the same value as eventId.",
						"in": "header",
						"name": "PayPathIQ-Event-Id",
						"required": true,
						"schema": { "format": "uuid", "type": "string" }
					},
					{
						"description": "t=<unix seconds>,v1=<hex signature>[,v1=<hex signature>]",
						"in": "header",
						"name": "PayPathIQ-Signature",
						"required": true,
						"schema": { "type": "string" }
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"example": {
								"clientCode": "demo_client",
								"eventId": "6f1c2d4e-8a3b-4c5d-9e7f-0a1b2c3d4e5f",
								"occurredAt": "2026-10-15T09:30:00.000Z",
								"resource": { "id": "REC_456", "type": "receivable" },
								"revision": 2,
								"type": "receivable.updated"
							},
							"schema": { "$ref": "#/components/schemas/WebhookNotification" }
						}
					},
					"required": true
				},
				"responses": {
					"2XX": { "description": "Notification accepted. Any 2xx status." }
				},
				"summary": "Change notification",
				"tags": ["Webhooks"]
			}
		}
	},
	"servers": [
		{ "description": "Sandbox", "url": "https://api.sandbox.paypathiq.com" },
		{ "description": "Production", "url": "https://api.paypathiq.com" }
	],
	"tags": [
		{
			"description": "PayPathIQ-owned delivery of receipts to the accounting Source, with acknowledgement kept separate.",
			"name": "Receipt delivery"
		},
		{
			"description": "People and businesses that owe one Client.",
			"name": "Customers"
		},
		{
			"description": "Independently recoverable Receivables.",
			"name": "Receivables"
		},
		{
			"description": "Immutable evidence of external payments, refunds, and reversals.",
			"name": "Payment observations"
		},
		{
			"description": "Ordered Source balance snapshots for transaction and snapshot-only connections.",
			"name": "Balance snapshots"
		},
		{
			"description": "Bounded asynchronous ingestion of up to 100 records with exact per-record outcomes.",
			"name": "Batches"
		},
		{
			"description": "Verified complete-book declarations that flag and hold Receivables missing from the book.",
			"name": "Complete books"
		},
		{
			"description": "Durable, resumable record of committed Customer and Receivable changes.",
			"name": "Changes"
		},
		{
			"description": "Optional signed, minimal notifications that a Customer or Receivable changed.",
			"name": "Webhooks"
		},
		{
			"description": "Fixed-amount hosted payment pages through the Client's own payment provider merchant.",
			"name": "Payment requests"
		},
		{
			"description": "Partner-owned delivery of confirmed Payments to accounting, kept separate from accounting acceptance.",
			"name": "Payment delivery"
		},
		{
			"description": "Explicit Receivable pause and closure commands.",
			"name": "Receivable lifecycle"
		},
		{
			"description": "Explicit, revisioned instructions that let PayPathIQ begin recovery for a Receivable.",
			"name": "Recovery instructions"
		},
		{
			"description": "Permissioned working collection position, holds, commitments and action outcomes, separate from the Source representation.",
			"name": "Collection summaries"
		},
		{
			"description": "Whether accepted source evidence is recent enough to act on.",
			"name": "Source freshness"
		},
		{
			"description": "This machine-readable API contract.",
			"name": "Specification"
		}
	]
}
