Skip to main content

Overview

A user can schedule a transaction to pull or push funds across Ahrvo. The Transaction API supports the following fund-movement scenarios:

  • Pull funds from an External Account (bank account or card) into a Ahrvo Account
  • Push funds from a Ahrvo Account to an External Account (bank account via ACH/Wire, or mailing address via Check)
  • Book transfers between any two Ahrvo Accounts
  • Refund a transaction that originally pulled funds from an External Account (bank account or card)
  • Share Virtual Card to make payments from a Ahrvo Account
  • Push funds from a Ahrvo Account to an International External Account via Wire

Third-party bank, card, or address details can be either:

  • Pre-existing – already stored in the system as External Account, Card, or Mailing Address entities.
  • One-time – passed inline for a single use; not stored.

11.2 Attributes

11.2.1 CARD Transaction Attributes

FieldTypeMandatory / OptionalCan be updated?Description
resourceNameEnumNoName of the resource. Always transaction.
urlObjectNoSystem-generated endpoint used to fetch the transaction.
idIntegerNoUnique identifier assigned by Ahrvo.
externalIdString (max 45)OptionalNoReference ID assigned by program manager.
methodStringMandatoryNoMethod of payment. For this table the value is CARD.
typeStringOptionalNoType of transaction.

Possible Values:

- REGULAR: Initiated by customer to make payments.

- REFUND: Initiated by customer against a collect transaction.

- REVERSAL: Initiated by Priority team or customer request against a Regular ACH transaction.
isAutoCaptureBooleanOptionalNoAuto-capture flag.

Possible Values:

- true: Create a direct SALE transaction.
- false: Create an authorization transaction.
transactionClassEnumNoClass displayed in Retrieve response.

Possible Values:

- SYSTEM_FEE: Transaction to charge fees.
- COLLECT: Move funds from external account to Ahrvo account.
purposeString (max 128)OptionalNoPurpose of the transaction. All characters allowed.
amountBig DecimalOptionalNoDollar value of the transaction. Must be > 0.
Optional when method = CARD; user is recommended to pass amountDetails.originalAmount.
amountDetailsObjectOptionalNoAdditional amount details.
amountDetails.tipAmountBig DecimalOptionalNoTip amount.
amountDetails.surchargeAmountBig DecimalConditionalNoSurcharge amount. Mandatory for surcharge-enabled merchants (configuration isSurchargeEnabled = TRUE).
amountDetails.originalAmountBig DecimalOptionalNoOriginal amount before tip / surcharge.
sourceObjectMandatoryNoAccount or external account to be debited.

Note: source need not be passed if type = REFUND.
source.cardObjectNoCard-specific details.
source.card.formStringOptionalNoCard form/type.

Possible Values: VIRTUAL, PLASTIC, MOBILE, TABLET
source.card.cardNumberStringMandatoryNo13–17-digit card number.
source.card.expiryMonthDateOptionalNoMonth of expiry (01–12).
source.card.expiryYearDateOptionalNo4-digit year; cannot be in the past.
source.card.cvvIntegerOptionalNo3–4-digit CVV.
source.card.accountTypeStringOptionalNoAccount type.

Possible Values: Unspecified, Savings, Checking, CreditCard, Universal, CashBenefits, FoodStamps
source.card.eciIndicatorStringOptionalNoECI indicator for CNP transactions (3-D Secure).
source.card.brandStringOptionalNoCard brand returned in Retrieve response.
Possible Values: MasterCard, Visa, Discover, AmericanExpress
source.card.avsObjectNoAddress Verification Service details.
source.card.avs.zipStringOptionalNo5- or 9-digit US ZIP or Canadian postal code.
source.card.avs.addressLine1StringOptionalNoStreet address.
source.card.avs.firstNameStringOptionalNoFirst name.
source.card.avs.middleNameStringOptionalNoMiddle name.
source.card.avs.lastNameStringOptionalNoLast name.
source.card.avs.phoneStringOptionalNoPhone number.
source.card.avs.emailStringOptionalNoEmail address.
source.card.cardHolderObjectNoCard-holder information.
source.card.cardHolder.nameStringOptionalNoFull name.
source.card.cardHolder.firstNameStringOptionalNoFirst name.
source.card.cardHolder.lastNameStringOptionalNoLast name.
source.card.cardHolder.ipAddressStringOptionalNoIP address (max 15 chars).
source.card.cardHolder.hostNameStringOptionalNoHost name (max 60 chars).
source.card.cardHolder.browserTypeStringOptionalNoBrowser type (max 60 chars).
source.card.cardHolder.phoneStringOptionalNoPhone number.
source.card.cardHolder.emailStringOptionalNoEmail address.
source.card.cardHolder.numberStringOptionalNoCard-holder number.
source.card.billingAddressObjectOptionalNoBilling address details.
source.card.billingAddress.addressLine1StringOptionalNoLine 1.
source.card.billingAddress.cityStringOptionalNoCity.
source.card.billingAddress.stateStringOptionalNoState.
source.card.billingAddress.zipStringOptionalNo5- or 9-digit US / CND code.
source.card.billingAddress.countryStringOptionalNoCountry.
source.card.tokenStringOptionalNoCard token.
source.contactObjectMandatory for customer’s Contact inside AhrvoNoRequired to collect money from a Contact.
source.contact.idLongMandatoryNoAhrvo Contact ID.
source.card.idLongMandatory when using stored Ahrvo cardNoUnique card ID.
processingDetailObjectNoProcessing details.
processingDetail.ecomBooleanOptionalNotrue = e-commerce, false = card-present.
processingDetail.motoBooleanOptionalNoMail/Phone order flag.
processingDetail.statementDescriptorStringOptionalNoExtra descriptor.
processingDetail.businessApplicationStringOptionalNoBusiness application.
processingDetail.deviceObjectNoDevice information.
processingDetail.device.inputCapabilityStringOptionalNoSee full list under Device Input Capability.
processingDetail.device.posIdStringOptionalNoPOS ID.
processingDetail.device.typeStringOptionalNoDevice type.
processingDetail.device.accountCaptureMethodStringOptionalNoUNKNOWN, MANUAL, SWIPE, CHIP, CONTACTLESS_SWIPE, CONTACTLESS_CHIP, FALLBACK, CONTACTLESS_MOBILE, ON_FILE
processingDetail.device.cardPresentBooleanOptionalNoCard present flag.
processingDetail.device.cardholderPresenceStringOptionalNoUNKNOWN, PRESENT, NOT_PRESENT, MAIL, PHONE, STANDING, RECURRING, ECOM
processingDetail.device.attendanceStringOptionalNoUNKNOWN, ATTENDED, HOME_PC, VOICE_ARU, RECURRING, SERVER, UNATTENDED
processingDetail.device.locationStringOptionalNoUNKNOWN, SERVER, ON_PREMISE, OFF_PREMISE, HOME_PC, VOICE_ARU, ON_PREMISE_HOME_PC, RECURRING
processingDetail.device.catLevelStringOptionalNoUNKNOWN, NONE, ECOM, UNATTENDED
processingDetail.device.transactionSecurityStringOptionalNoTransaction security.
processingDetail.device.transactionStatusStringOptionalNoNORMAL, FRAUD_SUSPECTED, ID_VERIFIED, BIOMETRICS_VERIFIED
processingDetail.device.partialApprovalSupportStringOptionalNoNOT_SUPPORTED, SUPPORTED, MERCHANDISE_ONLY, CASH_ONLY, EXCLUSIVE
processingDetail.merchantObjectMandatoryNoMerchant info.
processingDetail.merchant.idLongMandatoryNoMerchant unique ID.
processingDetail.terminal.idLongMandatory for card-presentNoTerminal ID.
processingDetail.orderObjectNoOrder / invoice details (discount, tax, shipment, line items, lodging).
processingDetail.locationObjectOptionalYesLink a location to transaction.
processingDetail.location.idLongYesLocation ID.
processingDetail.batch.idLongNoBatch ID.
fundingObjectOptionalNoAdditional funding tags.
funding.tags[]ArrayOptionalNo{ "key":"type", "value":"Trust" }
reasonStringOptional (Refund)NoON_CUSTOMER_REQUEST, OTHERS (if OTHERS, comment is mandatory).
pendingCaptureAmountIntegerNoPending capture for an AUTH.
isFinalCaptureBooleanNoIf true, remaining auth is voided.

11.2.1 CARD Transaction Attributes (continued)

FieldTypeMandatory / OptionalCan be updated?Description
processingDetail.order.invoiceObjectOptionalNoCollection of invoices.
processingDetail.order.invoice.numberString ≤ 25OptionalNoInvoice number.
processingDetail.order.invoice.discountRateNumberOptionalNoDiscount rate.
processingDetail.order.invoice.discountAmountNumberOptionalNoDiscount amount.
processingDetail.order.invoice.taxAmountNumberOptionalNoTax amount.
processingDetail.order.invoice.taxRateNumberOptionalNoTax rate.
processingDetail.order.invoice.taxExemptBooleanOptionalNotrue or false.
processingDetail.order.invoice.shipmentDetailObjectOptionalNoShipment details.
processingDetail.order.invoice.shipmentDetail.freightTaxRateNumberOptionalNoFreight-tax rate.
processingDetail.order.invoice.shipmentDetail.destinationPostalCodeStringOptionalNo5- or 9-digit US / CND code.
processingDetail.order.invoice.shipmentDetail.sourcePostalCodeStringOptionalNo5- or 9-digit US / CND code.
processingDetail.order.invoice.shipmentDetail.dutyAmountNumberOptionalNoDuty amount.
processingDetail.order.invoice.shipmentDetail.freightAmountNumberOptionalNoFreight amount.
processingDetail.order.invoice.shipmentDetail.freightTaxAmountNumberOptionalNoFreight-tax amount.
processingDetail.order.invoice.shipmentDetail.addressObjectOptionalNoShipment address.
processingDetail.order.invoice.lineItemObjectOptionalNoLine-item details.
processingDetail.order.invoice.lineItem.commodityCodeString ≤ 16OptionalNoCommodity code.
processingDetail.order.invoice.lineItem.descriptionString ≤ 68OptionalNoProduct description.
processingDetail.order.invoice.lineItem.productCodeString ≤ 20OptionalNoProduct code.
processingDetail.order.invoice.lineItem.unitOfMeasureString ≤ 12OptionalNoUnit of measure.
processingDetail.order.invoice.lineItem.quantityNumberOptionalNoQuantity.
processingDetail.order.invoice.lineItem.unitCostNumberOptionalNoUnit cost.
processingDetail.order.invoice.lineItem.discountRateNumberOptionalNoDiscount %.
processingDetail.order.invoice.lineItem.discountAmountNumberOptionalNoDiscount amount.
processingDetail.order.invoice.lineItem.taxRateNumberOptionalNoTax %.
processingDetail.order.invoice.lineItem.taxAmountNumberOptionalNoTax amount.
processingDetail.order.invoice.lineItem.dutyAmountNumberOptionalNoDuty amount.
processingDetail.order.invoice.lineItem.extendedAmountNumberOptionalNoExtended amount.
processingDetail.order.lodgingObjectOptionalNoLodging details.
processingDetail.order.lodging.purchaseIdStringOptionalNoPurchase ID / folio.
processingDetail.order.lodging.roomsObjectOptionalNoRoom data (check-in, amount, duration).
pendingCaptureAmountIntegerNoRemaining authorization amount.
isFinalCaptureBooleanNotrue → void remaining auth.

11.2.2 ACH Transaction Attributes

FieldTypeMandatory / OptionalCan be updated?Description
resourceNameEnumNoAlways transaction.
urlObjectNoEndpoint for this transaction.
idIntegerNoAhrvo‐assigned ID.
externalIdString ≤ 45OptionalNoProgram reference.
methodStringMandatoryNoACH.
typeStringOptionalNoREGULAR | REFUND.
sourceObjectMandatoryNoDebit account or external account.
Not required if type = REFUND.
source.account.idLongMandatory if debiting Ahrvo accountNoAhrvo Account ID.
source.externalAccount.idLongMandatory if debiting stored External AccountNoExternal Account ID.
source.externalAccount.holderNameStringMandatory for one-timeNoBank-record holder name.
source.externalAccount.accountNumberLongMandatory for one-timeNoBank account number.
source.externalAccount.routingNumberLongMandatory for one-timeNoRouting number (digits).
source.externalAccount.typeEnumOptionalNoSAVINGS | CHECKING.
source.externalAccount.holderTypeEnumOptionalNoCONSUMER | CORPORATE.
source.contact.idLongMandatory if debiting a ContactNoAhrvo Contact ID.
destinationObjectMandatoryNoCredit account or external account.
Not required if type = REFUND.
destination.account.idLongMandatory when crediting Ahrvo accountNoAhrvo Account ID.
destination.externalAccount.idLongMandatory when crediting stored External AccountNoExternal Account ID.
processingDetailObjectConditionalYesACH processing info.
processingDetail.processingModeEnumConditionalYesSAME_DAY | FORWARD (default).
processingDetail.companyNameStringConditionalYesNACHA label; defaulted if absent.
processingDetail.companyDescriptionStringConditionalYesNACHA description.
processingDetail.authTypeEnumConditionalYesWRITTEN, PHONE, ONLINE; mandatory if PM config = none.
processingDetail.addendaString ≤ 80ConditionalYesACH addenda.
linkedDocumentObjectOptionalYesAuthorization docs.
linkedDocument.idStringNoDocument ID (Retrieve).
linkedDocument.purposeEnumConditionalYesAUTHORIZATION, CHECK_DEPOSIT, ESCALATION_IDENTIFICATION_PROOF.
linkedDocument.documentObjectConditionalYesDocument details.
linkedDocument.document.typeEnumConditionalYesSPAA, DMF, ATD, EFT, TEL_RECEIPT, WEB_RECEIPT, SEND_RECEIPT, SEND_PROOF, INVOICE, CHECK_IMAGE_BACK, CHECK_IMAGE_FRONT.
linkedDocument.document.nameStringConditionalYesFile name.
linkedDocument.document.base64encodedContentStringConditionalYesBase64 content.
processingDetail.location.idLongOptionalYesLocation ID.
amountBig DecimalMandatoryNo> 0.
purposeString ≤ 128MandatoryYes (ACH)Purpose text.
allowDuplicateBooleanOptional (default false)YesAllow duplicate schedule.
(Audit / status fields)NoSame as common table.

11.2.2 ACH Transaction Attributes (continued)

FieldTypeM / OUpd?Description
processingDetail.orderObjectOptionalNoOrder container for NACHA CCD/PPD detail.
processingDetail.order.invoiceObjectOptionalNoInvoice collection.
processingDetail.order.invoice.numberString ≤ 25OptionalNoInvoice number.
processingDetail.order.invoice.discountRateNumberOptionalNo% discount.
processingDetail.order.invoice.discountAmountNumberOptionalNoDiscount amount.
processingDetail.order.invoice.taxAmountNumberOptionalNoTax amount.
processingDetail.order.invoice.taxRateNumberOptionalNo% tax.
processingDetail.order.invoice.taxExemptBooleanOptionalNotrue / false.
processingDetail.order.invoice.shipmentDetailObjectOptionalNoFreight / duty sub-object.
processingDetail.order.invoice.lineItemObjectOptionalNoLine-item array (commodity, qty, cost, tax, duty, extended).
processingDetail.locationObjectOptionalYesLink a location.
processingDetail.location.idLongYesAhrvo Location ID.
processingDetail.batch.idLongNoACH batch ID (Retrieve).
fundingObjectOptionalNoAdditional funding tags (key / value).
statusStringNoCurrent status (see § 11.3.1).
statusReasonStringNoReason code.
statusDateTimestamp UTCNomm/dd/yyyy HH:MM:SS.
processDateTimestamp UTCNoDate settled.
pendingCaptureAmountN/ANot used for ACH.
isFinalCaptureN/ANot used for ACH.

11.2.3 WIRE Transaction Attributes

FieldTypeM / OUpd?Description
resourceNameEnumNoAlways transaction.
urlObjectNoEndpoint for this transaction.
idIntegerNoAhrvo ID.
externalIdString ≤ 45OptionalNoProgram reference.
methodStringMandatoryNo"WIRE".
typeStringOptionalNoREGULAR.
isTaxPaymentBooleanOptionalNotrue = Tax wire, false = regular wire.
sourceObjectMandatoryNoDebit Ahrvo Account or External Account (CORPORATE only).
source.account.idLongMandatory (Ahrvo)NoAccount ID.
source.externalAccount.idLongMandatory when debiting External AccountNoExternal Account ID.
destinationObjectConditional (REGULAR)NoCredit Ahrvo or External Account.
destination.account.idLongMandatory if crediting Ahrvo AccountNoAccount ID.
destination.externalAccount.idLongMandatory if crediting stored External AccountNoExternal Account ID.
destination.externalAccount.holderNameStringMandatory for one-timeNoBank holder name.
destination.externalAccount.accountNumberLongMandatory for one-timeNoBank account number.
destination.externalAccount.routingNumberLongMandatory for one-timeNoACH routing.
destination.externalAccount.wireRoutingNumberLongMandatory for one-timeNoFedwire routing.
destination.externalAccount.typeEnumOptionalNoSAVINGS | CHECKING.
destination.externalAccount.holderTypeEnumOptionalNoCONSUMER | CORPORATE.
processingDetailObjectOptionalYesWire details.
processingDetail.memoString ≤ 40OptionalYesFedwire description.
processingDetail.originatorStringOptionalYesOriginator name.
processingDetail.wireReferenceStringNoBank reference (Retrieve).
processingDetail.location.idLongOptionalYesLocation link.
processingDetail.payorObjectMandatory if PM requiresYesPayor KYC.
processingDetail.payor.nameString ≤ 23MYesPayor name.
processingDetail.payor.emailString ≤ 80MYesPayor email.
processingDetail.payor.phoneStringMYesPayor phone (XXX-XXX-XXXX).
processingDetail.payor.address.*ObjectMYesPayor address lines, city, state, zip (≤ 9), country (ISO-2).
processingDetail.taxDetailObjectConditional (isTaxPayment=true)YesIRS tax wire fields (authority, TIN, taxType, year, month).
linkedDocumentObjectOptionalYesAuthorization / proof docs.
amountBig Decimal > 0MandatoryYesWire amount.
amountOriginTypeEnumCond.NoFor non-USD support (SOURCE/DESTINATION).
purposeString ≤ 128MandatoryYesReason.
allowDuplicateBooleanOptionalYesDefault false.
(Audit/status fields)NoSame as common table.

11.2.4 INTERNATIONAL_WIRE Transaction Attributes

FieldTypeM / OUpd?Description
method"INTERNATIONAL_WIRE"MandatoryNoFixed.
typeStringOptionalNoREGULAR | REFUND.
source.account.idLongMandatoryNoDebit Ahrvo Account.
destination.internationalExternalAccount.idLongMandatory when stored IEANoIEA ID.
destination.internationalExternalAccount.holderNameString ≤ 60Mandatory for one-timeNoHolder name.
destination.internationalExternalAccount.holderAddress.addressLine1String 4-40MandatoryNoAddress line 1.
destination.internationalExternalAccount.holderAddress.addressLine2String ≤ 30OptionalNoAddress line 2.
destination.internationalExternalAccount.holderAddress.cityString ≤ 45MandatoryNoCity (Unicode allowed).
destination.internationalExternalAccount.holderAddress.stateEnum 2MandatoryNoState / province code.
destination.internationalExternalAccount.holderAddress.countryString 2MandatoryNoISO-2 country.
destination.internationalExternalAccount.accountNumberLongMandatoryNoBank account number.
destination.internationalExternalAccount.swiftCodeString 8–11ConditionalNoSWIFT/BIC.
destination.internationalExternalAccount.typeEnumOptionalNoSAVINGS | CHECKING.
destination.internationalExternalAccount.holderTypeEnumOptionalNoCONSUMER | CORPORATE.
processingDetail.memoString ≤ 40OptionalYesWire memo.
processingDetail.fxQuote.idStringOptionalNoFX Quote ID (valid 30 s).
processingDetail.fxQuote.destination.amountBig DecimalNoDestination amount (Retrieve).
processingDetail.fxQuote.destination.currencyEnumNoDestination currency.
processingDetail.fxQuote.fxRateBig DecimalNoRate applied.
processingDetail.fxQuote.feeBig DecimalNoFX fee.
processingDetail.originatorStringOptionalYesOriginator name.
processingDetail.wireReferenceStringNoBank reference.
processingDetail.location.idLongOptionalYesLocation.
processingDetail.payorObjectMandatory if Payor-validation enabledYesPayor details (name, email, phone, address).
amountBig Decimal > 0MandatoryNoWire debit amount.
amountOriginTypeEnumMandatory for non-USDNoSOURCE | DESTINATION.
currencyEnum 3MandatoryNoDebit currency (system currently USD).
purposeString ≤ 128MandatoryYesReason.
allowDuplicateBoolean (default false)OptionalYesPermit duplicates.
linkedDocumentObjectOptionalYesAuthorization proof.
(Audit / status fields)NoAs common.

11.2.4 INTERNATIONAL_WIRE Transaction Attributes (continued)

FieldTypeM / OUpd?Description
linkedDocumentObjectOptionalYesAuthorization / proof document set.
linkedDocument.idStringNoUnique doc identifier (Retrieve).
linkedDocument.purposeEnumConditionalYesPurpose of the linked document.

Possible Values:
AUTHORIZATION
CHECK_DEPOSIT
ESCALATION_IDENTIFICATION_PROOF
linkedDocument.documentObjectConditionalYesDocument metadata.
linkedDocument.statusEnumConditionalYesDocument status.
PENDING, VERIFIED, REJECTED
linkedDocument.document.resourceNameStringNoAlways document.
linkedDocument.document.urlStringNoSystem endpoint to fetch the document.
linkedDocument.document.idStringNoSystem-generated doc ID.
linkedDocument.document.typeEnumConditionalYesLinked-doc type.

Possible Values (AUTHORIZATION):
SPAA, DMF, ATD, EFT, TEL_RECEIPT, WEB_RECEIPT, SEND_PROOF, INVOICE, CUSTOMER_AGREEMENT, AMENDED_AGREEMENT

Possible Values (CHECK_DEPOSIT):
CHECK_IMAGE_BACK, CHECK_IMAGE_FRONT

Possible Values (ESCALATION_IDENTIFICATION_PROOF):
PASSPORT, DRIVING_LICENSE, STATE_ID, UTILITY_BILL, PERMANENT_RESIDENT_CARD, HOMEOWNERS_INSURANCE, PAY_STUB, PROPERTY_TAX_STATEMENT, RENTAL_AGREEMENT, CREDIT_REPORT, LEASE_AGREEMENT, HOMELOAN_STATEMENT, W2, ITIN_CARD, FORM_1099R, MARRIAGE_CERTIFICATE, BIRTH_CERTIFICATE, SSN_CARD, DEATH_CERTIFICATE, TAX_STATEMENT, BUSINESS_LICENSE, BANK_STATEMENT
linkedDocument.document.nameStringConditionalYesFriendly file name.
linkedDocument.document.base64encodedContentStringConditionalYesBase-64 encoded body.
linkedDocument.linkedOnTimestamp UTCNomm/dd/yyyy HH:MM:SS
linkedDocument.linkedByObjectNoUser who linked the doc.

11.2.5 CHECK Transaction Attributes

FieldTypeM / OUpd?Description
resourceNameEnumNoAlways transaction.
urlObjectNoEndpoint for this transaction.
idIntegerNoAhrvo-assigned ID.
externalIdString ≤ 45OptionalNoProgram reference.
methodStringMandatoryNo"CHECK".
typeStringOptionalNoREGULAR | EXTERNAL.
sourceObjectMandatoryNoDebit Ahrvo account (or external for REFUND).
source.account.idLongMandatoryNoDebiting account ID.
destinationObjectConditional (REGULAR)NoCredit via Mailing Address or Contact.
destination.address.idLongConditionalNoMailingAddress ID.
destination.payeeNameStringOptionalNoPayee name.
destination.contact.idLongMandatory when Contact recipientNoContact ID.
destination.contact.mailingAddress.idLongMandatory when Contact has mailing addressNoAddress ID.
processingDetailObjectConditionalYesCheck-specific controls.
processingDetail.deliveryModeEnumOptionalYesSTANDARD (default), TWO_DAY, OVERNIGHT
processingDetail.remittanceInfoObjectOptionalYesCheck remittance template columns <key1>…<key10> (≤17 entries each).
processingDetail.memoString ≤ 255OptionalYesMemo printed on check.
processingDetail.isEndorsedBooleanOptionalNotrue if user‐supplied endorsed images. Default false.
processingDetail.checkTypeEnumConditionalNoBUSINESS_CHECK, PERSONAL_CHECK.
Mandatory if isEndorsed = true.
processingDetail.accountNumberStringConditionalNoMICR account # (if endorsed).
processingDetail.routingNumberString 9ConditionalNoMICR routing # (if endorsed or checkType present).
processingDetail.onUsStringConditionalNoMICR on-us field.
processingDetail.auxiliaryOnUsStringConditionalNoAuxiliary on-us (business checks).
processingDetail.checkNumberString 1-4ConditionalNoCheck number (if endorsed).
processingDetail.shippedByStringNoShipping vendor (Retrieve).
processingDetail.printedByStringNoPrinting vendor (Retrieve).
processingDetail.shippingStatusStringNoShipping status.
processingDetail.checkReferenceStringNoBank reference number.
processingDetail.location.idLongOptionalYesLocation link.
linkedDocumentObjectMandatory when type = REGULARYesFront/back images or document group.
linkedDocument.document.typeEnumMandatoryNoCHECK_IMAGE_FRONT, CHECK_IMAGE_BACK (Regular); or CK, CO, EN, IN, WP (External).
linkedDocument.document.nameStringOptionalNoFile name.
linkedDocument.document.base64encodedContentStringMandatoryNoBase-64 payload.
linkedDocument.purposeEnumMandatoryNoCHECK_DEPOSIT (Collect) or CHECK_IMAGE (Send).
amountBig Decimal > 0MandatoryYesCheck amount.
processInstantlyBooleanOptionalNoLedger debit instantly (default false).
purposeString ≤ 128MandatoryYesReason.
allowDuplicateBoolean (default false)OptionalYesPermit duplicate schedule.
commentString ≤ 512OptionalYesUser comments.
(Audit / status fields)NoAs common.

11.2.5 CHECK Transaction Attributes (continued)

FieldTypeM / OUpd?Description
processingDetail.device.inputCapabilityN/A(Card-only; not used for Check)
Endorsement & MICR Validations- processingDetail.isEndorsed = true requires all of:
  • processingDetail.checkType
  • processingDetail.routingNumber (9 digits)
  • processingDetail.accountNumber
  • processingDetail.checkNumber (1-4 digits)
- For BUSINESS_CHECK, processingDetail.auxiliaryOnUs is mandatory.
Quick-SettleQuick-Settle node is available only if Program Manager has enabled the feature.
PO Box RestrictionFor Overnight / Two-Day checks, destination address cannot be PO Box / Lockbox.

11.2.6 BOOK Transaction Attributes

FieldTypeMandatory / OptionalCan be updated?Description
resourceNameEnumNoAlways transaction.
urlObjectNoEndpoint to fetch this transaction.
idIntegerNoUnique Ahrvo ID.
externalIdString (max 45)OptionalNoProgram-manager reference.
methodStringMandatoryNo"BOOK".
typeStringOptionalNoREGULAR (initiated by customer).
sourceObjectMandatoryNoAhrvo account debited.
source.account.idLongMandatoryNoDebit account ID.
destinationObjectMandatoryNoAhrvo account / card credited.
destination.account.idLongMandatoryNoCredit account ID.
destination.account.externalIdLongConditionalNoExternal identifier (if supplied).
destination.card.idLongMandatoryNoAhrvo-issued CARD (type=CREDIT) for authorized user.
destination.card.externalIdLongConditionalNoExternal ID of the Credit Card (if supplied).
commentString ≤ 512OptionalYesUser comments.
tagsList of StringOptionalYesLabels / tags assigned.
statusStringNoCurrent status (see § 11.3).
statusReasonStringNoReason for status.
statusDateDateNoWhen status was set (UTC mm/dd/yyyy HH:MM:SS).
processDateDateNoWhen transaction processed (UTC).
createdOnTimestamp UTCNoCreation time.
createdBy.userTypeEnumNoUser type.
createdBy.usernameStringNoUsername.
createdBy.statusEnumNoUser status.
lastUpdatedOnTimestamp UTCNoLast modification time.
lastUpdatedBy.userTypeEnumNoUser type.
lastUpdatedBy.usernameStringNoUsername.
lastUpdatedBy.statusEnumNoUser status.

11.2.7 VIRTUAL_CARD Transaction Attributes

FieldTypeMandatory / OptionalCan be updated?Description
resourceNameEnumNoAlways transaction.
urlObjectNoEndpoint to fetch this transaction.
idIntegerNoAhrvo ID.
externalIdString (max 45)OptionalNoProgram-manager reference.
methodStringMandatoryNo"VIRTUAL_CARD".
typeStringOptionalNoREGULAR.
sourceObjectMandatoryNoAhrvo account debited.
source.account.idLongConditionalNoDebit account ID (required when debiting specific account).
destinationObjectMandatoryNoEntity to be credited.
destination.contactObjectMandatoryNoContact receiving the Virtual Card.
destination.contact.idLongMandatoryNoAhrvo Contact ID.
processingDetailObjectConditionalYesVirtual-card specifics.
processingDetail.virtualCardObjectMandatoryNoVirtual card payload.
processingDetail.virtualCard.cardProgramObjectMandatoryNoCard-program link (contact Ahrvo AM for IDs).
processingDetail.virtualCard.cardProgram.idLongMandatoryNoCard Program ID.
processingDetail.locationLongOptionalYesLocation reference.
processingDetail.location.idObjectYesAhrvo Location ID.
commentString ≤ 512OptionalYesUser comments.
statusStringNoCurrent status (see § 11.3).
statusReasonStringNoReason code.
statusDateDateNoWhen status set (UTC).
processDateDateNoWhen processed (UTC).
createdOnTimestamp UTCNoCreation timestamp.
createdBy.userTypeEnumNoUser type.
createdBy.usernameStringNoUsername.
createdBy.statusEnumNoUser status.
lastUpdatedOnTimestamp UTCNoLast updated timestamp.
lastUpdatedBy.userTypeEnumNoUser type.
lastUpdatedBy.usernameStringNoUsername.
lastUpdatedBy.statusEnumNoUser status.

11.3 Statuses

This section lists every status, status reason, and event—verbatim—from the specification.


11.3.1 Transaction Statuses & Status Reasons

(Applies to ACH, Check, Wire, International Wire, and Book)

StatusDescription
SCHEDULEDDefault on creation.
PENDINGUpon being unable to fulfil the following processing conditions of transaction:
• Source account should be ACTIVE and have sufficient funds.
• Destination should be in ACTIVE status.
• Entities involved should be OFAC and CIP verified.
APPROVED(For Card transactions only) Upon card transaction being authorized by issuing bank.
PROCESSINGUpon transaction being picked for processing.
CANCELLEDUpon receiving a request for cancellation from the user.
COMPLETED• Post completion of realization interval (good-funds period).
• Upon successful completion of refund.
FAILEDUpon being unable to process transaction within the transaction-processing interval from the authorized transaction date.
Upon receiving a return due to account closure or debit block.
IN_DELIVERY(CHECK only) Upon Check transactions being under shipment.
DELIVERED(CHECK only) Upon Check being delivered successfully.
STOPPED(CHECK only) Upon receiving a request to stop a Check after it has been printed.
VOIDEDUpon voiding a transaction (fraudulent, duplicate, others).
Status → Reason Map
StatusReason
SCHEDULEDOn User Request
PENDINGExternal Account Blocked • External Account Inactive • Account Inactive • Account Blocked • Account Closure Initiated • Account Closed • Customer Suspended • Parent Collect not in Completed Status • OFAC status is not verified
PROCESSINGProcessing In Transit
CANCELLEDOn Customer Request • Incorrectly Created • Others • Insufficient Funds • On User Request • Send Cancelled as per Compliance Uncleared Payment Policy
COMPLETEDProcessed by System • Remote Check Processed
FAILEDCollect Processing Interval Lapsed • <return-description> (<return-code>) • Collect Processing Failed • External Account Blocked • External Account Inactive • Account Inactive • Account Blocked • Account Closure Initiated • Account Closed • Customer Suspended • Insufficient Funds • Transaction failed due to OFAC verification failure.
IN_DELIVERYProcessing In Delivery
DELIVEREDTransaction Delivered
STOPPEDLost Check • Fraud • Incorrect Destination • Incorrect Amount • Incorrectly Created • On User Request • Others
VOIDEDFraudulent • Duplicate • Others

11.3.2 CARD Transaction Statuses & Status Reasons

StatusDescription
UNCAPTUREDDefault on authorization transaction.
PARTIALLY_CAPTURED• Amount of authorization captured and isFinalCapture not true.
• Two captures exist and one capture is voided, leaving partial amount.
CAPTURED• Capture amount equals authorization amount.
• Capture amount greater than authorization amount.
• Capture amount less than authorization but isFinalCapture true.
COMPLETED• Post completion of realization interval (good-funds period).
• Upon successful completion of refund.
FAILEDUpon receiving transaction failure from network.
VOIDEDUpon card collect being voided by merchant.
APPROVEDDefault on creation of refund via CARD and on creation of capture.

11.3.3 External Account Statuses

StatusDescriptionEvents Responsible For
INACTIVEPending VerificationDefault on creation
PENDING_VERIFICATIONPending VerificationExternal account is under verification & validation.
ACTIVE• Credit Only (EWS – No debits accepted)
• Credit Only (R01 – Insufficient Funds)
• Upon successful verification and/or validations of external account.
BLOCKEDAccount In Error (R02 – Account Closed) • Account Blocked (Micro-Deposit verification failure) • Account Inerror (Manually Flagged)• Receiving returns on Collects / Prenote / Micro-deposit transactions.
• Receiving “Account Closed” via instant validation.
• Manual BLOCKED flag.

11.3.4 International External Account Statuses

StatusStatus ReasonEvents Responsible For
INACTIVEPending VerificationDefault on creation.
ACTIVEOFAC VerifiedUpon successful OFAC verification of the International External Account.
BLOCKEDOFAC RejectedUpon manually marking the OFAC of the International External Account as REJECTED.

11.3.5 OFAC Statuses

StatusEvents Responsible For
PENDING_VERIFICATIONDefault status on create or holder-name update when OFAC verification is enabled.
VERIFIEDUpon successful verification of OFAC.
UNDER_REVIEWSystem unable to verify OFAC automatically—escalated to Ahrvo team for manual review.
REJECTEDOFAC disapproved during manual verification.
IGNOREDDefault if OFAC verification is disabled.

11.3.6 Linked Document Statuses

StatusEvents Responsible For
PENDING_VERIFICATIONDefault status upon uploading the document.
VERIFIEDUpon successful review of a document by the reviewer.
REJECTEDUpon rejection review by the reviewer.

11.4 Business Validations

  1. Account-validation hold – If an account-validation (prenote) feature is enabled, a user cannot schedule a Collect within 3 business days from the prenote schedule date.
  2. External IDs must be unique for all transactions and cannot be updated once provided.
  3. Configurable Card fields – At onboarding, Ahrvo allows a Program Manager to mark cvv, billingAddress, holderName, and brand as optional. If any of these are optional, a warning is displayed:

    “It is recommended to pass CVV, billing address, holder name to minimize processing expense and prevent fraud exposure.”

  4. Transaction date must be the current UTC date (no back-dating or future-dating).
  5. A CHECK transaction can be stopped only if its status is PROCESSING, IN_DELIVERY, or DELIVERED.
  6. For a transaction with method CHECK OVERNIGHT or CHECK TWO_DAY, the destination address cannot be a PO Box or Lockbox.
  7. For a one-time International External Wire, the holder address cannot be a PO Box.
  8. If reason = OTHERS, the field comment becomes mandatory.
  9. Refund rules
    • parent may reference either the id or externalId of the original transaction.
    • method may be CARD or ACH.
    • A refund can be scheduled when the parent is in PROCESSING, APPROVED, or COMPLETED; it will not process until the parent reaches COMPLETED.
    • Refund amount ≤ parent amount.
    • If multiple refunds exist, the sum of refunds must not exceed the parent amount.
  10. Check Remittance templates
    • Configured by Ahrvo admin. Contact AM to obtain template ID & columns.
    • Max 10 columns; max 17 entries per column.
  11. Endorsement validation flags (processingDetail.checkType, routingNumber, accountNumber, checkNumber, isEndorsed) are optional, mandatory, or not supported based on PM settings. Contact admin to change settings.
  12. Default ACH authType – PM may configure a default (WRITTEN, ONLINE, PHONE). If default is none, customers must supply authType on Create.
  13. processInstantly flag
    • Considered only for CHECK and BOOK.
    • For BOOK, default is false; if true, the customer’s account is debited immediately and transaction status becomes COMPLETED.
  14. Quick-Settle is visible only for ACH & Check if the PM has enabled the feature.
  15. Virtual Card issuance – Creating virtual cards for your own use does not require PCI-DSS; issuing for your users may classify you as a Service Provider and require compliance.
  16. For newly-onboarded PMs & Customers, CARD captures & refunds are created in APPROVED status (legacy INITIATED kept for existing integrations).
  17. Foreign-Exchange Quote
    • Use the FX Quote API for non-USD International Wires.
    • The fxQuote.id is valid for 30 s; an expired quote causes an error.
    • If no quote is supplied, the system fetches one and returns its ID in the Retrieve response.
  18. Surcharge logic
    • Where surcharge is disabled, integrator must omit surchargeAmount or set it to 0.
    • surchargeAmount is calculated on originalAmount, excluding tip.
    • Banker’s rounding is enforced:
      • 3.455 → 3.46 (third decimal 5, second decimal odd)
      • 3.465 → 3.46 (third decimal 5, second decimal even)
      • 3.454 → 3.45 (third decimal < 5)
      • 3.456 → 3.46 (third decimal > 5)
    • Debit & Prepaid cards – surcharge prohibited.
    • State restrictions: Connecticut, Maine, Texas, Massachusetts, Puerto Rico prohibit surcharges. Colorado: max 2 % or processing cost. All other states: max 3 %.
    • For Ad-hoc refunds, merchants with surcharge enabled must either refund the exact surcharge or 0. Any deviation triggers an error.

11.5 Error Codes & Messages

CodeError MessageCondition
EC-VA-0005"field":"<field-name>", "message":"Is required."Mandatory node omitted.
EC-VA-0001"field":"<field-name>", "message":"Invalid Value <value> for field <field-name>."Unsupported field value.
EC-BL-2305"A duplicate transaction already exists."Duplicate transaction created.
EC-BL-0003Send with external reference: <external-id> already exists.Attempt to change externalId.
EC-BL-0020externalAccount with id: <external-id> does not exist.Non-existent External Account ID.
EC-VA-0005"field":"scheduleDate", "message":"Date cannot be in past or future."Transaction date not current.
EC-VA-0001"field":"method", "message":"Invalid Value <value> for field method."Unsupported method.
EC-BL-0019Please add a comment as the reason for stopping a send instruction is 'Others'.comment missing when reason = OTHERS.
EC-BL-4384"Authorisation failed-<reason>", "processorCode":"<code>"Card authorization failure (see processor code list).
EC-BL-0034CHECK Send transaction with id :<id> and externalId :<externalId> does not existUnknown Check send reference.
EC-BL-0035No document found for the requested send transaction.Send transaction lacks document.
EC-BL-0908You cannot update mailing address with PO box/ Lock box. Check 2day/ Check Overnight send instructions are scheduled for this mailing address with :<object>Attempt to update address linked to expedited Check.
EC-BL-1127Can not stop a check send transaction in :<object> status.Stop request in disallowed status.
EC-BL-1153Can not stop a WIRE send transaction.Stop request for Wire.
EC-BL-1175Invalid field :<entity> for creating a :<method> send transaction.Unsupported node for method.
EC-BL-4422Credited account : [accountNumber] does not match with the payment accountCredited account mismatch.
EC-BL-1181Invalid header for remittance template.Remittance header mismatch.
EC-BL-1181Remittance template does not exist.Unknown remittance template.
EC-VA-0005The length should not exceed 255 characters.Memo length > 255.
EC-BL-9954:<method> method not supported by this :<entityName>.Unsupported method for entity.
EC-BL-9977:<value> is not an accepted currency for the International External Account :<id>Unsupported currency for IEA.
EC-BL-9999Only USD is supported as currency.IEA does not support provided currency.
EC-BL-10196Authorization cannot be voided as it has already been capturedAttempt to void captured auth.
WARN-2213Authorization: {id} adjusted from amount: {original_amount} to amount: {final_capture_amount}Pending capture adjusted.
EC-BL-10191Final capture received for Authorization.Cannot adjust after final capture.
EC-BL-0373processingDetail.checkType cannot be null.Missing checkType on endorsed Check.
EC-BL-0382processingDetail.checkNumber cannot be null.Missing Check number on endorsed Check.
EC-BL-0383processingDetail.routingNumber cannot be null.Missing routing number on endorsed Check.
EC-BL-0384processingDetail.accountNumber cannot be null.Missing account number on endorsed Check.
EC-BL-10351FxQuote has expired. Please try again.FX Quote older than 30 s.
EC-VA-0004amountOriginType as Destination is mandatory when the transaction involves a non-USD foreign currency.Missing amountOriginType on non-USD Intl Wire.

11.5 Error Codes & Messages (continued)

CodeError MessageCondition
EC-BL-10362Delete not allowed on Non USD accounts.Attempt to delete non-USD account.
EC-BL-10355Update not allowed on Non USD accounts.Attempt to update non-USD account.
EC-BL-10359{"field":"taxID","message":"taxID is mandatory…"}Missing country-specific field.
EC-BL-0005{"field":"acceptedCurrency", …}Missing mandatory fields.
EC-BL-9999Only USD is supported as currency.Provided currency not supported.
Codes EC-VA-0005, EC-VA-0001, EC-BL-2305, EC-BL-0003, EC-BL-0020, EC-BL-0019, EC-BL-4384, EC-BL-0034, EC-BL-0035, EC-BL-0908, EC-BL-1127, EC-BL-1153, EC-BL-1175, EC-BL-4422, EC-BL-1181, EC-BL-9954, EC-BL-9977, EC-BL-10196, WARN-2213, EC-BL-10191, EC-BL-0373, EC-BL-0382, EC-BL-0383, EC-BL-0384, EC-BL-10351, EC-VA-0004 appear earlier in Part 7 with their full messages and triggers.

11.6 Operations Supported

The Transaction entity supports the following operations:

#OperationDescription
11.6.1Create TransactionSchedule a new transaction (collect, send, refund, etc.).
11.6.2Update TransactionModify allowed fields of an existing transaction.
11.6.3Retrieve Transaction by IDFetch full details of a specific transaction.
11.6.4Delete TransactionPermanently delete a transaction (where permitted).
11.6.5Cancel TransactionCancel a scheduled or pending transaction.
11.6.6Stop TransactionStop a Check transaction already printed/shipped.
11.6.7List TransactionList transactions matching filter criteria.
11.6.8Void TransactionVoid an uncaptured card authorization.
11.6.9Refund TransactionIssue a refund against a completed collect/send.
11.6.10Adjust TransactionAdjust a prior card authorization amount.
11.6.11Retrieve Virtual Card ImageGet the image (front/back) of a virtual card.
11.6.12Capture TransactionCapture funds on a prior card authorization.