Submits the customer's identity data for a payment that requires KYC. The required data varies by payment method — the example below carries the data PayID asks for.
Customer identity data for any payment method that asks for verification. Fields are optional in the schema; the payment method decides which are required, and missing or unsupported ones are returned in kycResponseData.errors. The payment method's guide lists its required data.
CUSTOMER_VERIFICATION while kycResponseData.errors must be corrected; otherwise the status of the continued transaction, as in the payment method's usual response, or FAILED.
declineCode
Integer
Decline code of a FAILED transaction. 4034, 4035 and 4036 are verification declines; other decline codes are possible when the continued transaction is declined.
Present only when the submitted data was not accepted. apmResponseData is then absent.
paymentType
String (APM)
Payment type identifier: CARD for card transactions, APM for alternative payment methods.
Field
Type
Description
providerTransactionId
String
Transaction identifier from the upstream payment service provider.
iframeUrl
String
Page to embed in an iframe. With actionType KYC_REQUIRED it is the identity verification form: add the parentOrigin query parameter and relay its messages as described in the KYC Widget Integration guide. With REDIRECTION some providers also return an embeddable version of redirectUrl.
Markdown payment instructions keyed by language code. Use the selected language, falling back to en, then an available translation. No instructions are displayed when the map is absent or empty.
redirectUrl
String
Full-page redirect URL where the customer completes payment. Use this for standard redirect flow.
{ "requestId": "original-payment-request", "transactionId": "123456789", "transactionStatus": "PROCESSING", "paymentType": "APM", "apmResponseData": { "paymentMethod": "PAY_ID", "paymentType": "BANK_TRANSFER", "actionType": "REFERENCE", "providerTransactionId": "payment-1", "references": [ { "key": "bankName", "label": "Bank", "value": "Example Bank" }, { "key": "accountHolder", "label": "Account holder", "value": "Example Holder" }, { "key": "accountNumber", "label": "Account number", "value": "00123456" }, { "key": "payidReference", "label": "Payment reference", "value": "A4K9PX" } ], "customerInstructionsByLanguage": { "en": "## How to pay\n\n1. Open your banking app and create a new transfer to the account shown.\n2. Enter the displayed amount in AUD.\n3. Enter the payment reference exactly as shown in the transfer description.\n4. Confirm the transfer.\n\nYou will be redirected back to the merchant as soon as we receive your payment." } }}
Idempotency: After an unconfirmed response (503 or 504), retry the same transaction with the same KYC data. After input errors, submit the corrected data for the same transaction. This endpoint accepts no requestId; never create a new transaction automatically.
Malformed request, for example kycData is missing. Fix the request; the transaction is unchanged.
401
Merchant authentication required.
403
Missing payment-write permission, or the payment belongs to another merchant.
404
No payment with this transactionId; a payout transactionId also returns 404 here.
413
Request body larger than 16 MiB, or sent without Content-Length. Send fewer or smaller images; the transaction is unchanged.
422
The payment is not waiting for KYC: its action is not KYC_REQUIRED or it already has a result. Do not resubmit; read the payment status instead.
503
Result unconfirmed: verification could not be reached, or the platform returned an unexpected error. The payment is not declined by this response. Retry the same transaction with the same data a bounded number of times, then read the transaction status instead of retrying further.
504
Result unconfirmed: verification did not finish in time. Retry the same transaction with the same data. If the payment has meanwhile received a result, the retry returns 422 and the status endpoint shows it.
429
Too Many Requests — rate limit exceeded. Back off before retrying.
500
Internal Server Error — an unexpected error occurred. Retry with exponential backoff.