Creates a cash payment line or records an externally processed EFT attempt. Provide a unique GUID for paymentLineId.
Returns HTTP 201 with the saleId, refreshed entities and sale totals.
For EFT, send success: true for an already authorized payment. BC records the EFT Transaction Request and creates an approved POS payment line with the supplied paymentLineId.
A successful zero-amount attempt also creates a line, but has no financial impact.
An EFT request using a paymentLineId already used by any active POS sale line returns HTTP 400 without adding another EFT request, payment line or receipt. This rejects the duplicate; it does not replay the original success response.
New EFT integrations must send success as a JSON boolean. For backwards compatibility, omitted success is accepted and treated as false. An explicitly supplied non-boolean value returns HTTP 400 without recording an attempt or payment.
Identifier values exceeding the documented length limits also return HTTP 400 without recording an attempt or payment.
If success is false or omitted, BC records the attempted amount and supplied PSP reference, card data, PAR and receipts without creating a POS payment line.
The EFT output and result amounts are zero. The response has an empty refreshedPaymentLines array and an unchanged totalPaymentAmount.
GET for that paymentLineId returns 404. Repeating a failed request can create additional EFT audit records; these requests are not deduplicated.
Earlier behavior added the amount to the sale even when success was false or omitted. Callers must send success: true for authorized payments to count toward completing the sale; the compatibility default does not pay the sale.
EFT amounts use the G/L Setup local currency. BC uses the time it receives the request, converted to the API session's local time zone, for the transaction and stored receipt date/time.
Only LCY EFT payments are supported. Configure the EFT payment method for LCY, as for staffed POS; the API uses the same POS payment-line insertion without API-specific currency conversion.
The payload does not supply the provider's authorization timestamp or test/production mode.
Negative EFT amounts return HTTP 400 with the message "refunds not implemented" and create no records. Cash amount handling is unchanged.
Request
This endpoint expects an object.
paymentMethodCodestringRequired
POS payment method code, at most 10 characters. Overlong codes are rejected, not truncated.
paymentTypeenumRequired
Type of payment (Cash or EFT)
amountdoubleRequired
For EFT, the attempted amount in the G/L Setup local currency. Negative EFT amounts fail with “refunds not implemented”.
descriptionstringOptional
maskedCardNostringOptional
For EFT payments, masked card number, at most 30 characters. Overlong values are rejected, not truncated.
pspReferencestringOptional
For EFT payments, PSP reference number, at most 16 characters. Overlong values are rejected, not truncated.
parTokenstringOptional
For EFT payments, the Payment Account Reference, or PAR, identifying the payment account. At most 100 characters, stored in the dedicated Payment Account Reference field; overlong values are rejected, not truncated. This is not a reusable authorization token and is not stored as an External Payment Token.
cardApplicationIdstringOptional
For EFT payments, card application ID for payment method mapping, at most 32 characters. Overlong values are rejected, not truncated.
successbooleanOptional
Required for new EFT integrations and must be a JSON boolean when supplied. Non-boolean values return HTTP 400. Not required for Cash.
Send true only when the external provider has authorized the payment. True creates an approved POS payment line; false records the failed attempt without a POS payment line and does not increase the sale’s payment total.
For backwards compatibility, omitting success is accepted and treated as false.
eftReceiptlist of stringsOptional
For EFT payments, receipt lines to store for either a successful or failed attempt.
Response
This endpoint returns an object.
saleIdUUID
The id of a POS sale. This can be provided by the API consumer when creating a new sale.
vatBusinessPostingGroupstring
genBusinessPostingGroupstring
refreshedSaleLineslist of objects
Full objects for all sale lines that were created or modified
refreshedPaymentLineslist of objects
Full objects for all payment lines that were created or modified
deletedSaleLineslist of strings
Array of SystemIds (UUIDs) for sale lines that were deleted
deletedPaymentLineslist of strings
Array of SystemIds (UUIDs) for payment lines that were deleted
totalSalesAmountInclVatdouble
Total amount of all sale lines including VAT
totalPaymentAmountdouble
Total amount of all payment lines