Mobile-ID · Evidence-based trust
Records glossaryContact
Trusted Records · Integration & Developer

Payment request

Design payment requests from acceptance; no payable QR is generated.

Request schema from OpenAPI

FieldTypeRequiredConstraintsTechnical definition
acceptanceRefstringYes{"minLength": 1, "maxLength": 128}Proposed acceptanceRef field. Synthetic identifiers must not contain personal data.
billingVersionintegerYes{"minimum": 1}Proposed billingVersion field. Synthetic identifiers must not contain personal data.
amountMinorintegerYes{"minimum": 1}Amount in minor units; synthetic VND uses whole dong and implies no approved price.
currencystringYes{"enum": ["VND"], "minLength": 1}Proposed currency field. Synthetic identifiers must not contain personal data.
channelstringYes{"enum": ["NAPAS_QR_PROPOSED"], "minLength": 1}Proposed channel field. Synthetic identifiers must not contain personal data.

Contract boundary

Design payment requests from acceptance; no payable QR is generated.

Exceptions and reconciliation

After timeout, query state rather than create another transaction/command with an unknown prior outcome. Retain correlation/version/evidence without records or credentials in logs.

HTTP example — proposed contract

Request

POST https://records.example.invalid/v1/payment-requests HTTP/1.1
Authorization: Bearer <example-token>
X-Tenant-Id: synthetic-tenant-001
X-Project-Id: synthetic-project-001
X-Correlation-Id: synthetic-correlation-001
Idempotency-Key: synthetic-key-001
Content-Type: application/json

{
  "acceptanceRef": "synthetic-acceptance-001",
  "billingVersion": 1,
  "amountMinor": 125000,
  "currency": "VND",
  "channel": "NAPAS_QR_PROPOSED"
}

Response · 202

{
  "paymentRequestId": "synthetic-payment-001",
  "state": "PENDING",
  "payableQr": null
}

Required fields and shared controls

ItemProposed rule
scopebilling:write
requiredacceptanceRef, billingVersion, amountMinor, currency, channel
tenant / projectToken and context must match; headers alone are insufficient.
idempotencyPOST/PATCH: same key/body returns original result; changed body returns 409; confirm retention window.
errorcode, message, requestId, correlationId, retryable, details; no sensitive data.

Start with a verifiable scope.

Agree record classes, quality criteria, permissions and evidence before scaling.

Plan assessment

Search Trusted Records

Enlarged source image

Illustrative source image; displayed values are not service commitments.