Skip to content

Suggested

API Dashboard

RecipesPrevalidate a payment

Prevalidate a payment

Create a payment attempt before committing a payment when your UI needs validation and rail readiness checks.

Use a payment attempt when your product needs to validate the chosen amount, currency, origin, destination, and rail fields before creating the real payment. This is useful for hosted checkout, complex payout forms, and flows where the payer can change methods before final submission.

Note

Attempts are not final money movement. They are a validation and initialization step. Create the payment only after the user confirms the validated shape.

01
Discover methods

Call available products for the identity and currencies.

02
Create attempt

Send the candidate payment nodes for validation.

03
Render correction

Ask for any missing rail-specific fields.

04
Create payment

Submit the final payment request.

Request
POST /sandbox/payment-attempts HTTP/1.1
Host: api.conomyhq.com
x-api-key: {YOUR_API_KEY}
Authorization: Bearer {ACCESS_TOKEN}
conomyhq-api-version: 24-04-2025
User-Agent: MyApp/1.0
Content-Type: application/json
Accept: application/json

{
  "externalId": "attempt-order-1001",
  "identityId": "<IDENTITY_ID>",
  "accountNumber": "<ACCOUNT_NUMBER>",
  "totalAmount": "100000",
  "product": "CLP:CLP",
  "type": "TOPUP_ACCOUNT",
  "purchaseAmount": "100000",
  "purchaseCurrency": "CLP",
  "currency": "CLP",
  "origins": [
    {
      "type": "ETPAY",
      "currency": "CLP",
      "etpay": {
        "successUrl": "https://yourapp.com/success",
        "failedUrl": "https://yourapp.com/failed",
        "customer": {
          "firstName": "Jane",
          "email": "jane@example.com"
        }
      }
    }
  ],
  "destinations": [
    {
      "type": "ACCOUNT",
      "amount": "100000",
      "currency": "CLP",
      "identity": {
        "identityId": "<IDENTITY_ID>"
      },
      "account": {
        "accountNumber": "<ACCOUNT_NUMBER>"
      }
    }
  ]
}
Response
{
  "id": "<PAYMENT_ATTEMPT_ID>",
  "externalId": "attempt-order-1001",
  "type": "TOPUP_ACCOUNT",
  "status": "ATTEMPT"
}

Use this to resume an unfinished checkout or let an operator inspect why a flow did not become a payment.

Request
GET /sandbox/payment-attempts/{PAYMENT_ATTEMPT_ID} HTTP/1.1
Host: api.conomyhq.com
x-api-key: {YOUR_API_KEY}
Authorization: Bearer {ACCESS_TOKEN}
conomyhq-api-version: 24-04-2025
User-Agent: MyApp/1.0
Accept: application/json
Response
{
  "id": "<PAYMENT_ATTEMPT_ID>",
  "type": "TOPUP_ACCOUNT",
  "status": "ATTEMPT",
  "product": "CLP:CLP"
}