Skip to main content
THE NEW PAYMENT MODEL

One purchase.
Every attempt.

The operation holds the purchase context. Transactions record what happened each time the customer tried to pay.

A different way to read payments

In Alignet One, a transaction is not necessarily an independent sale. The model has two levels: One operation can contain several transactions. Each transaction belongs to an operation context. Retrying or changing methods does not, by itself, create another store order.
“Purchase session” describes the business context. Its validity is not necessarily the same as a browser tab, token or local timer. Follow your integration’s validity and retry rules.

The same state names, two different levels

Operations and transactions use the same state names, but describe different resources. Always specify whether a state belongs to the operation or to an attempt. The current states are Registered, Pending, Authorized, Invalid, Declined, Voided, Settled, Expired and Cancelled. Keep the overall operation state separate from each transaction’s state. Abonado (merchant payout) and Devuelto (refunded) are planned but not available yet. Do not make them required conditions in your integration.

Explore one purchase with several attempts

Advance through the example: two attempts are declined and the third is authorized. The operation and store order stay the same; the transaction history grows. The final result is one S/ 50.00 purchase with three attempts, one authorized. Do not add their amounts together and report S/ 150.00 in sales.

What changes in your integration

Keep the store order

Connect the purchase to its operation. Do not create another order just because an attempt was declined.

Keep each attempt's identity

Store every transaction_id and its outcome. Do not overwrite a previous attempt when adding the next.

Show support the journey

Keep the method and response for every attempt and identify the one that was authorized.

Separate reconciliation levels

Count purchases in their operation context and analyze authorizations, declines and adjustments per transaction.
Pending is not declined. After a timeout or while a QR/CIP is pending, query the outcome before encouraging another charge. Do not assume Alignet cancelled other attempts or automatically prevents every duplicate.

Recognize both levels in the API

The transaction query returns an operation structure and a transactions collection.
Two different lists: transactions[] groups transactions; lifecycle[] groups events within a transaction. Registered, pending and authorized events do not mean three attempts.
The documented query takes merchant_code, merchant_operation_number and transaction_id. Do not assume a transaction-filtered query necessarily returns the operation’s entire history.

Structure example

Simplified response fragment based on the documented query. Identifiers are illustrative; this is not a request to copy or a complete state catalog.
This is one operation and one transaction with three events, not three transactions. In this contract, 15000 is an amount in minor units: S/ 150.00 with currency 604 (PEN).

Implementation rules

  1. Connect order and operation. Keep their identifiers separate; do not assume identical formats.
  2. Record each attempt. Store its transaction_id, method, state and support references.
  3. Do not infer payment from the UI. Closing checkout or receiving a callback does not by itself prove approval.
  4. Confirm from your backend. Validate operation, attempt, amount and currency using the appropriate query or notification.
  5. Apply changes idempotently. Repeated notifications or queries must not duplicate fulfillment or register the same sale again.
  6. Preserve history. A subsequent void or refund does not erase the original payment transaction.
Keeping an operation for the same purchase is not the same as blindly resending an HTTP request. Technical retry, expiration and idempotency rules depend on the endpoint and channel.

Check your understanding

In the example: one purchase, one operation and three transactions. Only one transaction was authorized.
No. One transaction changed state three times. All events belong to the same transaction_id.
Do not decide from that alone. Check the operation and its attempts. Do not overwrite a confirmed purchase with another attempt’s decline.

Next: transaction states

Learn what each outcome means and how your integration should respond.