Using Authorize.net as the gateway in AppBO for merchants who already hold their own processing agreement.
Bring your stack to a call and we will connect it, test every field in both directions, and hand it over documented.
Book a callAuthorize.net is a payment gateway rather than a payment facilitator, and that distinction shapes the whole integration. On the gateway side sit the API login identifier and transaction key, the transaction types (authorize, capture, authorize-and-capture, void, refund), the customer profile store for saved payment methods, and the gateway's own fraud filters. Behind the gateway sits a separate merchant account with an acquiring bank or processor, which is where the money actually settles. On the AppBO side sit the contact, the order, the pipeline and the workflows.
You choose it when the merchant account already exists. Established businesses frequently have a negotiated processing arrangement, a long relationship with an acquirer, or an industry classification that a payment facilitator will not accept, and in all those cases the gateway is the component that gets swapped and the underlying processing stays put. It is also common in markets and verticals where the incumbent gateway has been in place for years and the cost of migrating is not merely technical.
What you give up compared with a modern facilitator is breadth and polish: fewer alternative payment methods, an older API surface, a settlement model based on a daily batch rather than continuous capture, and reporting that lives in the gateway's own interface. What you get is continuity with an existing banking relationship. The integration work is to make the platform's automation accurate despite the batch model: specifically, to stop treating an authorization as money received.
Scenario: an established supplier with its own merchant account sells a service on an AppBO order form, authorizing at checkout and capturing on dispatch.
order-authorized, moves the opportunity to Awaiting dispatch, and sends an order confirmation that is careful to say the card has been authorized rather than charged.order-paid, moves the opportunity to Won, sends the dispatch notification with the receipt, and starts the post-purchase sequence.payment-review, suppresses the confirmation email, and raises a task for finance to make a decision in the gateway interface.The gateway applies its own request limits and they are documented on its side; check the current reference rather than assuming, and back off rather than hammering. The more consequential limit is operational: the daily batch. Everything approved after the cut-off settles a day later, which means cash-flow expectations and any automation that keys off settlement must account for the gap.
Treat every payment request as potentially non-idempotent and protect it on your side: before submitting, check whether an approved transaction already exists for that order reference, and store the transaction identifier the moment you receive it. A blind retry after a timeout is how a customer gets authorized twice. Voids and refunds must reference the original transaction identifier, and the choice between them depends on whether the batch has settled, voiding an unsettled transaction is cleaner than refunding a settled one, so build both paths.
Response codes and reason codes are two different fields and both matter; collapsing them loses the information that distinguishes a retryable decline from a permanent one. Address-verification and card-code results are separate from the approval itself, so a transaction can be approved while failing verification: decide your policy deliberately. Amount formatting and decimal precision are strict, and the gateway is less forgiving of malformed input than newer APIs. Field length limits on name, address and description fields will reject a transaction outright rather than truncating.
This is the defining trap. An approved authorization is a hold, not a payment, and it expires. The window depends on the card network and the issuer, so check rather than assume. Fulfilling on authorization and never capturing means shipping for free; capturing after the hold expires means a failed capture on an order you have already shipped. Automate the capture step and alert on authorizations that have aged without capture.
The gateway has a duplicate-window behavior that can reject an identical transaction submitted shortly after another, which looks like a mysterious decline when a customer legitimately orders the same thing twice. Vary the order reference per transaction so genuine repeat purchases are not blocked, and do not rely on that window as your duplicate protection.
Sandbox and production have separate credentials and separate endpoints, and the classic launch-day failure is production credentials against the sandbox endpoint, or the reverse. The first silently takes no money; the second takes real money during testing. Verify the environment explicitly, and keep sandbox credentials available afterwards for regression testing.
The transaction key can be regenerated in the gateway interface, and regenerating it invalidates the old one immediately, which breaks the platform connection the moment someone does it for an unrelated reason. Record who is allowed to rotate it and make updating the platform part of that procedure. Watch for the signature key too, if you validate notifications.
We wire the integration, map the fields, test both directions and hand it over with the SOPs your team needs to run it.
Book a call