post
https://sandbox-api-gtw.softpoint.io/api//customers//transfers/in/complete
This API is used to confirm the iframe charge and record it for the customer.
It returns approved or declined (with the processor reason) and the transaction. Show success to the customer only after this response.
Note: The server checks that the gateway transaction matches the intent (customer, card, amount). If the charge is not finished yet it returns 409: retry after a few seconds. Calling it again returns the same result; nothing is recorded twice.
URL
{{interface_url}}/{{version}}/customers/{{customer_id}}/transfers/in/complete
Method
POST
Headers
Authorization: Bearer {access_token} (or Api-Key)
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| transfer_intent | String | Yes | transfer_intent from Transfer in — prepare. |
| transaction_id | String | Yes | transaction_id returned by the iframe after submitPayment. Max 64. |
URL Parameters
| Parameter | Required/Optional | Type | Description |
|---|---|---|---|
| customer_id | Required | Integer | Our customer ID (id returned by Create customer). |
Example Request (cURL)
curl --location --request POST '{{interface_url}}/{{version}}/customers/{{customer_id}}/transfers/in/complete' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
"transfer_intent": "eyJpdiI6...",
"transaction_id": "756F11F1-E1E1-4724-A0D8-D05099D6021D"
}'
Example Response (JSON) — 200
{
"status": "approved",
"decline": null,
"transaction": {
"id": 1048821,
"date": "2026-11-05T18:16:18Z",
"type": "sale",
"status": "approved",
"amount": 5150,
"method": {
"type": "card",
"brand": "visa",
"last4": "4242"
}
}
}
Error Responses
Format: { "error": { "code", "name", "message", "details" } }
| Status | Error | When |
|---|---|---|
| 422 | transfer_intent_invalid | Intent expired, altered or of another customer. |
| 404 | transaction_not_found | The gateway transaction does not exist. |
| 403 | transfer_transaction_mismatch | The transaction does not match the intent. |
| 409 | transfer_not_completed | The charge is still in progress. Retry. |
| 502 | payment_gateway_unexpected_response | Could not record the payment. Retry. |

