> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# Make a transaction

POST https://api-sandbox.payabli.com/api/v2/MoneyIn/getpaid
Content-Type: application/json

Make a single transaction. This method authorizes and captures a payment in one step. This is the v2 version of the `api/MoneyIn/getpaid` endpoint, and returns the unified response format. See [Pay In unified response codes reference](/guides/pay-in-unified-response-codes-reference) for more information.

Reference: https://docs.payabli.com/developers/api-reference/moneyinV2/make-a-transaction

## Servers

- `https://api-sandbox.payabli.com/api` (Sandbox, default)
- `https://api.payabli.com/api` (Production)

## Request

### Query parameters

- `achValidation` (boolean, optional) — When `true`, enables real-time validation of ACH account and routing numbers. This is an add-on feature, contact Payabli for more information.
- `forceCustomerCreation` (boolean, optional) — When `true`, the request creates a new customer record, regardless of whether customer identifiers match an existing customer. Defaults to `false`.

### Headers

- `idempotencyKey` (string, optional) — _Optional but recommended_ A unique ID that you can include to prevent duplicating objects or transactions in the case that a request is sent more than once. This key isn't generated in Payabli, you must generate it yourself. This key persists for 2 minutes. After 2 minutes, you can reuse the key if needed.
- `validationCode` (string, optional) — Value obtained from user when an API generated CAPTCHA is used in payment page

### Body (application/json)

- `paymentDetails` (object, required) — Object describing details of the payment. Required.
  - `totalAmount` (double, required) — Total amount to be charged. If a service fee is sent, then this amount should include the service fee."
  - `categories` (list of object, optional) — Array of payment categories/line items describing the amount to be paid. **Note**: These categories are for information only and aren't validated against the total amount provided.
    - `amount` (double, required) — Price/cost per unit of item or category.
    - `label` (string, required) — Name of item or category.
    - `description` (string, optional) — Description of item or category
    - `qty` (integer, optional, default: 1) — Quantity of item or category
  - `checkImage` (map from string to any, optional) — Object containing image of paper check.
  - `checkNumber` (string, optional) — A check number to be used in the ach transaction. **Required** for payment method = 'check'.
  - `currency` (string, optional) — The currency for the transaction, `USD` or `CAD`. If your paypoint is configured for CAD, you must send the `CAD` value in this field, otherwise it defaults to USD, which will cause the transaction to fail.
  - `serviceFee` (double, optional) — Service fee to be deducted from the total amount. This amount must be a number, percentages aren't accepted. If you are using a percentage-based fee schedule, you must calculate the value manually.
  - `splitFunding` (list of object, optional) — Split funding instructions for the transaction. See [Split a Transaction](/developers/developer-guides/money-in-split-funding) for more.
    - `accountId` (string, optional) — The accountId for the account the split should be sent to.
    - `amount` (double, optional) — Amount from the transaction to send to this recipient.
    - `description` (string, optional) — A description for the split.
    - `recipientEntryPoint` (string, optional) — The entrypoint the split should be sent to.
  - `checkUniqueId` (string, optional) — Unique identifier for a processed check image. Required for RDC (Remote Deposit Capture) transactions where `achCode` is `BOC`. Use the `id` value from the [check processing](/developers/api-reference/moneyin/check-capture) response.
- `paymentMethod` (object or object or object or object or object or object or object, required) — Information about the payment method for the transaction. Required and recommended fields for each payment method type are described in each schema below.
  - PayMethodCredit
    - `cardexp` (string, required) — Card expiration date in format MMYY or MM/YY. Required for card transactions.
    - `cardnumber` (string, required) — The card number. Required when method is `card` and a `storedMethodId` isn't included.
    - `method` ("card", required) — Method to use for the transaction. For transactions with a credit or debit card, or a tokenized card, use `card`.
    - `cardcvv` (string, optional) — Card Verification Value (CVV) associated with the card number. We **strongly recommend** that you include this field when using `card` as a method.
    - `cardHolder` (string, optional) — Cardholder name.
    - `cardzip` (string, optional) — ZIP or postal code for the billing address of cardholder. We **strongly recommend** that you include this field when using `card` as a method.
    - `initiator` (string, optional) — The transaction's initiator. Indicates who initiated the transaction.
    - `saveIfSuccess` (boolean, optional) — When `true`, Payabli saves the payment method if the transaction is successful. The payment method ID is returned in the response as `methodReferenceId`. Defaults to `false`.
  - PayMethodACH
    - `achAccount` (string, required) — Bank account number. This field is **required** when method = 'ach'.
    - `achHolder` (string, required) — Bank account holder. This field is **required** when `method` is `ach` or `check`.
    - `achRouting` (string, required) — ABA/routing number of bank account. This field is **required** when method = 'ach'.
    - `method` ("ach", required)
    - `achAccountType` (enum, optional) — Bank account type. This field is **required** when method = 'ach'.
      - Allowed values: `Checking`, `Savings`
    - `achCode` (string, optional) — Standard Entry Class (SEC) code is a three letter code that describes how an ACH payment was authorized. Supported values are: - **PPD** (Prearranged Payment and Deposit) — Used for credits or debits where an accountholder authorizes a company to initiate either a single or recurring transaction to their personal bank account. Common examples include direct deposit of payroll, mortgage payments, or utility bills. This is the default value for subscription payments. - **WEB** (Internet-Initiated/Mobile Entry) — Used for debit entries when authorization is obtained from an accountholder via the internet or a wireless network. Common examples are online bill payments, ecommerce purchases, and mobile app payments where the consumer enters their banking information online. - **TEL** (Telephone-Initiated Entry) — Used for one-time debit entries where authorization is obtained from a consumer via telephone. Common examples are phone-based purchases or bill payments where the consumer provides their banking information over the phone. - **CCD** (Corporate Credit or Debit) — Used for fund transfers between business accounts. This code is specifically for business-to-business transactions. Common examples include vendor payments and other business-to-business payments. - **BOC** (Back Office Conversion) — Used to convert paper checks received in-person at a point-of-sale or staffed payment location into electronic ACH debits. Required for Remote Deposit Capture (RDC) transactions. Only supports consumer checks; business, government, and mailed checks aren't eligible.
    - `achHolderType` (enum, optional, default: personal) — The bank's accountholder type: personal or business.
      - Allowed values: `personal`, `business`
    - `device` (string, optional) — Identifier of registered cloud device used in the transaction.
  - PayMethodStoredMethod
    - `method` (enum, required) — Method to use for the transaction. Use `card`, `ach`, or `wallet` depending on what kind of method was tokenized to use a saved payment method for this transaction.
      - Allowed values: `card`, `ach`, `wallet`
    - `initiator` (string, optional) — The transaction's initiator. Indicates who initiated the transaction.
    - `storedMethodId` (string, optional) — Payabli identifier of a tokenized payment method.
    - `storedMethodUsageType` (string, optional) — **Strongly recommended.** The usage type for the stored method, used for merchant-initiated transactions (MIT). If you don't specify a value, Payabli defaults to `unscheduled`. Available values: - `unscheduled`: One-time or otherwise not pre-scheduled. - `subscription`: Subscription payments. For example, monthly rental fees or ongoing service subscriptions. - `recurring`: Recurring payments per a set plan. For example, splitting an HOA special assessment over 6 monthly payments. See [Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview) for more information.
  - PayMethodCloud
    - `method` ("cloud", required) — Method to use for the transaction. For cloud device transactions, the method is `cloud`.
    - `device` (string, optional) — Identifier of registered cloud device used in the transaction.
    - `saveIfSuccess` (boolean, optional) — When `true`, Payabli saves the payment method if the transaction is successful. The payment method ID is returned in the response as `methodReferenceId`. Defaults to `false`.
  - Check
    - `achHolder` (string, required) — The checking accountholder's name.
    - `method` ("check", required) — Method to use for the transaction. Use `check` for a paper check transaction. When the method is `check`, then `paymentDetails.checkNumber` is required.
  - Cash
    - `method` ("cash", required) — Method to use for the transaction. For cash transactions, use `cash`.
  - PayMethodBodyAllFields
    - `achAccount` (string, required) — Bank account number. This field is **required** when method = 'ach'.
    - `achHolder` (string, required) — Bank account holder. This field is **required** when `method` is `ach` or `check`.
    - `achRouting` (string, required) — ABA/routing number of Bank account. This field is **required** when method = 'ach'.
    - `achAccountType` (enum, optional) — Bank account type: Checking or Savings.
      - Allowed values: `Checking`, `Savings`
    - `achCode` (string, optional) — Standard Entry Class (SEC) code is a three letter code that describes how an ACH payment was authorized. Supported values are: - **PPD** (Prearranged Payment and Deposit) — Used for credits or debits where an accountholder authorizes a company to initiate either a single or recurring transaction to their personal bank account. Common examples include direct deposit of payroll, mortgage payments, or utility bills. This is the default value for subscription payments. - **WEB** (Internet-Initiated/Mobile Entry) — Used for debit entries when authorization is obtained from an accountholder via the internet or a wireless network. Common examples are online bill payments, ecommerce purchases, and mobile app payments where the consumer enters their banking information online. - **TEL** (Telephone-Initiated Entry) — Used for one-time debit entries where authorization is obtained from a consumer via telephone. Common examples are phone-based purchases or bill payments where the consumer provides their banking information over the phone. - **CCD** (Corporate Credit or Debit) — Used for fund transfers between business accounts. This code is specifically for business-to-business transactions. Common examples include vendor payments and other business-to-business payments. - **BOC** (Back Office Conversion) — Used to convert paper checks received in-person at a point-of-sale or staffed payment location into electronic ACH debits. Required for Remote Deposit Capture (RDC) transactions. Only supports consumer checks; business, government, and mailed checks aren't eligible.
    - `cardcvv` (string, optional) — Card Verification Value (CVV) associated with the card number. We **strongly recommend** that you include this field when using `card` as a method.
    - `cardexp` (string, optional) — Card expiration date in format MMYY or MM/YY. Required for card transactions.
    - `cardHolder` (string, optional) — Cardholder name.
    - `cardnumber` (string, optional) — The card number. Required when method is `card` and a `storedMethodId` isn't included.
    - `cardzip` (string, optional) — ZIP or postal code for the billing address of cardholder. We **strongly recommend** that you include this field when using `card` as a method.
    - `device` (string, optional) — Identifier of registered cloud device used in the transaction.
    - `initiator` (string, optional) — The transaction's initiator. Indicates who initiated the transaction.
    - `method` (enum, optional) — Method to use for the transaction.
      - Allowed values: `card`, `ach`, `cloud`, `check`, `cash`
    - `saveIfSuccess` (boolean, optional) — When `true`, Payabli saves the payment method if the transaction is successful. The payment method ID is returned in the response as `methodReferenceId`. Defaults to `false`.
    - `storedMethodId` (string, optional) — Payabli identifier of a tokenized payment method. If this field is used in a request, the `method` field is overridden and the payment is made using the payment token.
    - `storedMethodUsageType` (string, optional) — **Strongly recommended.** The usage type for the stored method, used for merchant-initiated transactions (MIT). If you don't specify a value, Payabli defaults to `unscheduled`. Available values: - `unscheduled`: One-time or otherwise not pre-scheduled. - `subscription`: Subscription payments. For example, monthly rental fees or ongoing service subscriptions. - `recurring`: Recurring payments per a set plan. For example, splitting an HOA special assessment over 6 monthly payments. See [Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview) for more information.
- `accountId` (string, optional) — Custom identifier for payment connector.
- `customerData` (object, optional) — Object describing the Customer/Payor. Which fields are required depends on the paypoint's custom identifier settings.
  - `additionalData` (map from string to map from string to any, optional) — Custom dictionary of key:value pairs. You can use this field to store any data related to the object or for your system. If you are using [custom identifiers](/developers/developer-guides/entities-customers), pass those in this object. Max length for a value is 100 characters. Example usage: ```json { "additionalData": { "key1": "value1", "key2": "value2", "key3": "value3" } } ```
  - `billingAddress1` (string, optional) — Billing address.
  - `billingAddress2` (string, optional) — Additional line for the billing address.
  - `billingCity` (string, optional) — Billing city.
  - `billingCountry` (string, optional) — Billing address country.
  - `billingEmail` (string, optional) — Email address.
  - `billingPhone` (string, optional) — Phone number.
  - `billingState` (string, optional) — Billing state. Must be a 2-letter state code for addresses in the US.
  - `billingZip` (string, optional) — Customer's billing ZIP code. For Pay In functions, this field supports 5-digit and 9-digit ZIP codes and alphanumeric Canadian postal codes. For example: "37615-1234" or "37615".
  - `company` (string, optional) — Customer's company name.
  - `customerId` (long, optional) — The Payabli-generated unique ID for the customer.
  - `customerNumber` (string, optional) — User-provided unique identifier for the customer. This is typically the customer ID from your own system.
  - `firstName` (string, optional) — Customer/Payor first name.
  - `identifierFields` (list of string, optional) — List of fields acting as customer identifiers, to be used instead of CustomerNumber.
  - `lastName` (string, optional) — Customer/Payor last name.
  - `shippingAddress1` (string, optional) — The shipping address.
  - `shippingAddress2` (string, optional) — Additional line for shipping address.
  - `shippingCity` (string, optional) — Shipping city.
  - `shippingCountry` (string, optional) — Shipping address country.
  - `shippingState` (string, optional) — Shipping state or province.
  - `shippingZip` (string, optional) — Shipping ZIP code. For Pay In functions, this field supports 5-digit and 9-digit ZIP codes and alphanumeric Canadian postal codes. For example: `37615-1234` or `37615`.
- `entryPoint` (string, optional) — The entrypoint identifier.
- `invoiceData` (object, optional) — Object describing an Invoice linked to the transaction.
  - `AdditionalData` (map from string to string, optional) — Custom dictionary of key:value pairs. You can use this field to store any data related to the object or for your system. If you are using [custom identifiers](/developers/developer-guides/entities-customers), pass those in this object. Max length for a value is 100 characters. ```json { "additionalData": { "key1": "value1", "key2": "value2", "key3": "value3" } } ```
  - `attachments` (list of object, optional) — Array of `fileContent` objects with attached documents. Max upload size is 30 MB.
    - `fContent` (string, optional) — Content of file, Base64-encoded. Ignored if `furl` is specified. Max upload size is 30 MB.
    - `filename` (string, optional) — The name of the attached file.
    - `ftype` (enum, optional) — The MIME type of the file (if content is provided).
      - Allowed values: `pdf`, `doc`, `docx`, `jpg`, `jpeg`, `png`, `gif`, `txt`
    - `furl` (string, optional) — Optional URL provided to show or download the file remotely.
  - `company` (string, optional) — Company name of the recipient of the invoice.
  - `discount` (double, optional) — Discount applied to the invoice.
  - `dutyAmount` (double, optional) — Duty amount.
  - `firstName` (string, optional) — First name of the recipient of the invoice.
  - `freightAmount` (double, optional) — Freight/shipping amount.
  - `frequency` (enum, optional) — Frequency of scheduled invoice.
    - Allowed values: `onetime`, `weekly`, `every2weeks`, `every6months`, `monthly`, `every3months`, `annually`, `firstofmonth`, `fifteenthofmonth`, `endofmonth`
  - `invoiceAmount` (double, optional) — The invoice amount.
  - `invoiceDate` (date, optional) — Invoice date in any of the accepted formats: YYYY-MM-DD, MM/DD/YYYY.
  - `invoiceDueDate` (date, optional) — Invoice due date in one of the accepted formats: YYYY-MM-DD, MM/DD/YYYY.
  - `invoiceEndDate` (date, optional) — Indicate the date to finish a scheduled invoice cycle (`invoiceType`` = 1) in any of the accepted formats: YYYY-MM-DD, MM/DD/YYYY.
  - `invoiceNumber` (string, optional) — Invoice number. Identifies the invoice under a paypoint.
  - `invoiceStatus` (integer, optional) — Invoice status code.
  - `invoiceType` (integer, optional) — Invoice type. Value `0` is for single/one-time invoices, `1` for scheduled invoices.
  - `items` (list of object, optional) — Array of line items included in the invoice.
    - `itemCategories` (list of string, optional) — Array of tags classifying item or product.
    - `itemCommodityCode` (string, optional) — Item or product commodity code. Max length of 250 characters.
    - `itemCost` (double, optional) — Item or product price per unit.
    - `itemDescription` (string, optional) — Item or product description. Max length of 250 characters.
    - `itemMode` (integer, optional) — Internal class of item or product: value `0` is only for invoices, `1` for bills, and `2` is common for both. Required on invoice line items — invoice creation fails with `Invalid item data` if it's omitted.
    - `itemProductCode` (string, optional) — Item or product code. Max length of 250 characters.
    - `itemProductName` (string, optional) — Item or product name. Max length of 250 characters.
    - `itemQty` (integer, optional) — Quantity of item or product.
    - `itemTaxAmount` (double, optional) — Tax amount applied to item or product.
    - `itemTaxRate` (double, optional) — Tax rate applied to item or product.
    - `itemTotalAmount` (double, optional) — Per-line total for this item (unit cost times quantity). Distinct from the invoice's overall total, `invoiceAmount`. Required on invoice line items.
    - `itemUnitOfMeasure` (string, optional) — Unit of measurement. Max length of 100 characters.
  - `lastName` (string, optional) — Last name of the recipient of the invoice.
  - `notes` (string, optional) — Notes included in the invoice.
  - `paymentTerms` (enum, optional) — Payment terms for invoice. If no terms are defined, then response data for this field defaults to `NET30`. Mirrors the values in [`Terms`](#schema-terms).
    - Allowed values: `PIA`, `CIA`, `UR`, `NET10`, `NET20`, `NET30`, `NET45`, `NET60`, `NET90`, `EOM`, `MFI`, `5MFI`, `10MFI`, `15MFI`, `20MFI`, `2/10NET30`, `UF`, `10UF`, `20UF`, `25UF`, `50UF`
  - `purchaseOrder` (string, optional) — Purchase order number.
  - `shippingAddress1` (string, optional) — The shipping address.
  - `shippingAddress2` (string, optional) — Additional line for shipping address.
  - `shippingCity` (string, optional) — Shipping city.
  - `shippingCountry` (string, optional) — Shipping address country.
  - `shippingEmail` (string, optional) — Shipping recipient's contact email address.
  - `shippingFromZip` (string, optional) — Sender shipping ZIP code.
  - `shippingPhone` (string, optional) — Recipient phone number.
  - `shippingState` (string, optional) — Shipping state or province.
  - `shippingZip` (string, optional) — Shipping ZIP code. For Pay In functions, this field supports 5-digit and 9-digit ZIP codes and alphanumeric Canadian postal codes. For example: `37615-1234` or `37615`.
  - `summaryCommodityCode` (string, optional) — Commodity code.
  - `tax` (double, optional) — Tax rate in percent applied to the invoice.
  - `termsConditions` (string, optional) — Custom terms and conditions included in the invoice.
- `ipaddress` (string, optional) — The IP address associated with the transaction.
- `orderDescription` (string, optional) — Text description of the transaction.
- `orderId` (string, optional) — Custom identifier for the transaction.
- `source` (string, optional) — Custom identifier to indicate the transaction or request source.
- `subdomain` (string, optional) — Refers to the payment page identifier. If provided, then the transaction is linked to the payment page.
- `subscriptionId` (long, optional) — Payabli identifier of the subscription associated with the transaction.

## Response

### 201

Ok

- `code` (string, required) — Payabli's unified response code. Starts with `A` (Approved) or `D` (Declined) followed by a four-digit code that provides specific details about the transaction result. See [Pay In unified response codes reference](/guides/pay-in-unified-response-codes-reference) for more information.
- `reason` (string, required) — Human-readable reason corresponding to the response code.
- `explanation` (string, required) — Detailed description of the response code.
- `action` (string, required) — Recommended resolution approach or next steps based on the response.
- `data` (object, required) — Complete transaction details returned by v2 Money In endpoints. This matches the structure of the transaction details previously returned by the v1 details endpoint.
  - `parentOrgName` (string, required) — The name of the parent organization.
  - `paypointDbaname` (string, required) — The alternate or common name that this business is doing business under, usually referred to as a DBA name.
  - `paypointLegalname` (string, required) — Business legal name.
  - `paypointEntryname` (string, required) — The entrypoint identifier.
  - `paymentTransId` (string, required) — Unique transaction identifier.
  - `connectorName` (string, required) — Name of the payment connector used.
  - `externalProcessorInformation` (string, required) — Information from the external processor about the transaction.
  - `gatewayTransId` (string, required) — Gateway transaction identifier.
  - `orderId` (string, required, nullable) — Custom identifier for the transaction.
  - `method` (string, required) — Payment method used for the transaction.
  - `batchNumber` (string, required) — A unique identifier for the batch. This is generated by Payabli when the batch is created, and follows this format: `paypointId + "_" + serviceName + "_" + batchDate:yyyyMMdd + "_" + Guid.NewGuid()`. Payabli generates the GUID to ensure that the batch number is unique. For example, in this batch number: `123_card_20251008_3f2504e0-4f89-11d3-9a0c-0305e82c3301`, the paypointID is `123`, the service is `card`, the batch date is `2025-10-08`, and the GUID is `3f2504e0-4f89-11d3-9a0c-0305e82c3301`.
  - `batchAmount` (double, required) — Total amount in the batch.
  - `payorId` (long, required) — Unique ID for the customer linked to the transaction. This is the same value as the `customerId` used when creating or referencing a customer.
  - `paymentData` (object, required) — Payment method and transaction details
    - `maskedAccount` (string, required) — Masked card or bank account used in transaction. In the case of Apple Pay, this is a masked DPAN (device primary account number).
    - `accountType` (string, required) — Bank account type or card brand.
    - `accountExp` (string, required, nullable) — Expiration date of card used in transaction.
    - `holderName` (string, required) — The cardholder name.
    - `storedId` (string, required, nullable) — Payabli identifier of a tokenized payment method. If this field is used in a request, the `method` field is overridden and the payment is made using the payment token.
    - `initiator` (string, required, nullable) — The transaction's initiator. Indicates who initiated the transaction.
    - `storedMethodUsageType` (string, required, nullable) — **Strongly recommended.** The usage type for the stored method, used for merchant-initiated transactions (MIT). If you don't specify a value, Payabli defaults to `unscheduled`. Available values: - `unscheduled`: One-time or otherwise not pre-scheduled. - `subscription`: Subscription payments. For example, monthly rental fees or ongoing service subscriptions. - `recurring`: Recurring payments per a set plan. For example, splitting an HOA special assessment over 6 monthly payments. See [Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview) for more information.
    - `sequence` (string, required, nullable) — The order of the transaction for cardholder-initiated transaction (CIT) and merchant-initiated transaction (MIT) purposes. This field is automatically detected and populated by Payabli. Available values: - `first`: The first use of the payment method. This is almost always a cardholder-initiated transaction. - `subsequent`: For merchant-initiated transactions after the first use of the payment method. See [Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview) for more information.
    - `orderDescription` (string, required, nullable) — Text description of the transaction.
    - `accountId` (string, required, nullable) — Custom identifier for payment connector.
    - `signatureData` (string, required, nullable)
    - `binData` (object, required, nullable) — Object containing information related to the card. This object is `null` unless the payment method is card. If the payment method is Apple Pay, the binData will be related to the DPAN (device primary account number), not the card connected to Apple Pay.
      - `binMatchedLength` (string, optional) — The number of characters from the beginning of the card number that were matched against a Bank Identification Number (BIN) or the Card Range table.
      - `binCardBrand` (string, optional) — The card brand. For example, Visa, Mastercard, American Express, Discover.
      - `binCardType` (string, optional) — The type of card: `Credit` or `Debit`. Case can vary between processors, so compare this value case-insensitively.
      - `binCardCategory` (string, optional) — The category of the card, which indicates the card product. For example: Standard, Gold, Platinum, etc. The binCardCategory for prepaid cards is marked `PREPAID`.
      - `binCardIssuer` (string, optional) — The name of the financial institution that issued the card.
      - `binCardIssuerCountry` (string, optional) — The issuing financial institution's country name.
      - `binCardIssuerCountryCodeA2` (string, optional) — The issuing financial institution's two-character ISO country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
      - `binCardIssuerCountryNumber` (string, optional) — The issuing financial institution's ISO standard numeric country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
      - `binCardIsRegulated` (string, optional) — Indicates whether the card is regulated.
      - `binCardUseCategory` (string, optional) — The use category classification for the card.
      - `binCardIssuerCountryCodeA3` (string, optional) — The issuing financial institution's three-character ISO country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
    - `paymentDetails` (object, required) — Detailed breakdown of payment amounts and identifiers
      - `totalAmount` (double, required)
      - `serviceFee` (double, required)
      - `checkNumber` (string, required, nullable)
      - `checkUniqueId` (string, required)
      - `currency` (string, required)
      - `orderDescription` (string, required, nullable) — Text description of the transaction.
      - `orderId` (string, required, nullable) — Custom identifier for the transaction.
      - `orderIdAlternative` (string, required, nullable)
      - `paymentDescription` (string, required, nullable)
      - `groupNumber` (string, required, nullable)
      - `source` (string, required, nullable) — Custom identifier to indicate the transaction or request source.
      - `payabliTransId` (string, required, nullable)
      - `categories` (list of any, required)
      - `splitFunding` (list of any, required)
  - `transStatus` (integer, required) — Status of transaction. See [the docs](/developers/references/money-in-statuses#money-in-transaction-status) for a full reference.
  - `paypointId` (long, required) — The paypoint's ID. Note that this is different than the entryname.
  - `totalAmount` (double, required) — Total transaction amount including fees.
  - `netAmount` (double, required) — Net transaction amount excluding fees.
  - `feeAmount` (double, required) — Service fee or sub-charge applied.
  - `settlementStatus` (integer, required) — Settlement status for transaction. See [the docs](/developers/references/money-in-statuses#payment-funding-status) for a full reference.
  - `operation` (string, required) — The transaction's operation.
  - `responseData` (object, required) — Response data from payment processor
    - `resultCode` (string, required) — Unified result code for the transaction. See [Pay In unified response codes](/guides/pay-in-unified-response-codes-reference) for more information.
    - `resultCodeText` (string, required) — Description of the result code. See [Pay In unified response codes](/guides/pay-in-unified-response-codes-reference) for more information.
    - `response` (string, required, nullable)
    - `responsetext` (string, required) — Text describing the result. If `ResultCode` = 1, will return `Approved` or a general success message. If `ResultCode` = 2 or 3, will contain the cause of the error or decline.
    - `authcode` (string, required, nullable) — Authorization code for the transaction.
    - `transactionid` (string, required) — Unique identifier for the transaction assigned by the payment processor.
    - `avsresponse` (string, required, nullable) — Text code describing the result for address validation (applies only for card transactions).
    - `avsresponse_text` (string, required, nullable) — Text code describing the result for address validation (applies only for card transactions).
    - `cvvresponse` (string, required, nullable) — Text code describing the result for CVV validation (applies only for card transactions).
    - `cvvresponse_text` (string, required, nullable) — Text code describing the result for CVV validation (applies only for card transactions).
    - `orderid` (string, required, nullable) — Custom identifier for the transaction.
    - `response_code` (string, required) — Processor-specific response code.
    - `response_code_text` (string, required) — Description of the response code.
    - `customer_vault_id` (string, required, nullable)
    - `emv_auth_response_data` (string, required, nullable) — EMV authorization response data, applicable for card transactions.
    - `type` (string, required, nullable)
  - `source` (string, required) — Custom identifier to indicate the transaction or request source.
  - `scheduleReference` (long, required) — Reference to associated payment schedule if applicable.
  - `orgId` (long, required) — Organization ID. Unique identifier assigned to an org by Payabli.
  - `refundId` (long, required) — Identifier of refund transaction linked to this payment.
  - `returnedId` (long, required) — Identifier of return/chargeback transaction linked to this payment.
  - `chargebackId` (long, required) — Identifier of chargeback transaction.
  - `retrievalId` (long, required) — Identifier of retrieval request.
  - `invoiceData` (object, required) — Invoice information if transaction is associated with an invoice
    - `invoiceNumber` (string, required, nullable) — Invoice number. Identifies the invoice under a paypoint.
    - `invoiceDate` (date, required, nullable)
    - `invoiceDueDate` (date, required, nullable)
    - `invoiceEndDate` (date, required, nullable)
    - `invoiceStatus` (integer, required, nullable) — Invoice status code.
    - `invoiceType` (integer, required, nullable) — Invoice type. Value `0` is for single/one-time invoices, `1` for scheduled invoices.
    - `frequency` (enum, required, nullable) — Frequency for operation. The `firstofmonth`, `fifteenthofmonth`, and `endofmonth` values are only valid on subscriptions — they aren't accepted by other endpoints (such as invoice scheduling) that use this enum.
      - Allowed values: `onetime`, `weekly`, `every2weeks`, `every6months`, `monthly`, `every3months`, `annually`, `firstofmonth`, `fifteenthofmonth`, `endofmonth`
    - `paymentTerms` (string, required, nullable)
    - `termsConditions` (string, required, nullable) — Custom terms and conditions included in the invoice.
    - `notes` (string, required, nullable)
    - `tax` (double, required, nullable) — Tax rate in percent applied to the invoice.
    - `discount` (double, required, nullable) — Discount applied to the invoice.
    - `invoiceAmount` (double, required, nullable) — The invoice amount.
    - `freightAmount` (double, required, nullable) — Freight/shipping amount.
    - `dutyAmount` (double, required, nullable) — Duty amount.
    - `purchaseOrder` (string, required, nullable) — Purchase order number.
    - `firstName` (string, required, nullable)
    - `lastName` (string, required, nullable)
    - `company` (string, required, nullable)
    - `shippingAddress1` (string, required, nullable) — The shipping address.
    - `shippingAddress2` (string, required, nullable) — Additional line for shipping address.
    - `shippingCity` (string, required, nullable) — Shipping city.
    - `shippingState` (string, required, nullable) — Shipping state or province.
    - `shippingZip` (string, required, nullable) — Shipping ZIP code. For Pay In functions, this field supports 5-digit and 9-digit ZIP codes and alphanumeric Canadian postal codes. For example: `37615-1234` or `37615`.
    - `shippingCountry` (string, required, nullable) — Shipping address country.
    - `shippingEmail` (string, required, nullable) — Email address.
    - `shippingPhone` (string, required, nullable)
    - `shippingFromZip` (string, required, nullable) — Sender shipping ZIP code.
    - `summaryCommodityCode` (string, required, nullable) — Commodity code.
    - `items` (list of object, required, nullable)
      - `itemCategories` (list of string, optional) — Array of tags classifying item or product.
      - `itemCommodityCode` (string, optional) — Item or product commodity code. Max length of 250 characters.
      - `itemCost` (double, optional) — Item or product price per unit.
      - `itemDescription` (string, optional) — Item or product description. Max length of 250 characters.
      - `itemMode` (integer, optional) — Internal class of item or product: value `0` is only for invoices, `1` for bills, and `2` is common for both. Required on invoice line items — invoice creation fails with `Invalid item data` if it's omitted.
      - `itemProductCode` (string, optional) — Item or product code. Max length of 250 characters.
      - `itemProductName` (string, optional) — Item or product name. Max length of 250 characters.
      - `itemQty` (integer, optional) — Quantity of item or product.
      - `itemTaxAmount` (double, optional) — Tax amount applied to item or product.
      - `itemTaxRate` (double, optional) — Tax rate applied to item or product.
      - `itemTotalAmount` (double, optional) — Per-line total for this item (unit cost times quantity). Distinct from the invoice's overall total, `invoiceAmount`. Required on invoice line items.
      - `itemUnitOfMeasure` (string, optional) — Unit of measurement. Max length of 100 characters.
    - `attachments` (list of object, required, nullable) — Array of `fileContent` objects with attached documents. Max upload size is 30 MB.
      - `fContent` (string, optional) — Content of file, Base64-encoded. Ignored if `furl` is specified. Max upload size is 30 MB.
      - `filename` (string, optional) — The name of the attached file.
      - `ftype` (enum, optional) — The MIME type of the file (if content is provided).
        - Allowed values: `pdf`, `doc`, `docx`, `jpg`, `jpeg`, `png`, `gif`, `txt`
      - `furl` (string, optional) — Optional URL provided to show or download the file remotely.
    - `additionalData` (map from string to string, required, nullable) — Custom dictionary of key:value pairs. You can use this field to store any data related to the object or for your system. If you are using [custom identifiers](/developers/developer-guides/entities-customers), pass those in this object. Max length for a value is 100 characters. ```json { "additionalData": { "key1": "value1", "key2": "value2", "key3": "value3" } } ```
  - `entrypageId` (long, required) — If applicable, the internal reference ID to the payment page associated with the transaction.
  - `externalPaypointID` (string, required, nullable) — A custom identifier for the paypoint, if applicable.
  - `isValidatedACH` (boolean, required) — Indicates if ACH account was validated in real-time.
  - `transactionTime` (string, required) — Timestamp when transaction was created.
  - `customer` (object, required) — Customer information associated with the transaction
    - `identifiers` (list of string, required, nullable) — List of fields acting as customer identifiers, to be used instead of CustomerNumber.
    - `firstName` (string, required)
    - `lastName` (string, required)
    - `companyName` (string, required, nullable)
    - `billingAddress1` (string, required, nullable) — Billing address.
    - `billingAddress2` (string, required, nullable) — Additional line for the billing address.
    - `billingCity` (string, required, nullable) — Billing city.
    - `billingState` (string, required, nullable) — Billing state. Must be a 2-letter state code for addresses in the US.
    - `billingZip` (string, required, nullable) — Billing address ZIP code.
    - `billingCountry` (string, required, nullable) — Billing address country.
    - `billingPhone` (string, required, nullable) — Phone number.
    - `billingEmail` (string, required, nullable) — Email address.
    - `customerNumber` (string, required, nullable) — User-provided unique identifier for the customer. This is typically the customer ID from your own system.
    - `shippingAddress1` (string, required, nullable) — The shipping address.
    - `shippingAddress2` (string, required, nullable) — Additional line for shipping address.
    - `shippingCity` (string, required, nullable) — Shipping city.
    - `shippingState` (string, required, nullable) — Shipping state or province.
    - `shippingZip` (string, required, nullable) — Shipping ZIP code. For Pay In functions, this field supports 5-digit and 9-digit ZIP codes and alphanumeric Canadian postal codes. For example: `37615-1234` or `37615`.
    - `shippingCountry` (string, required, nullable) — Shipping address country.
    - `customerId` (long, required) — The Payabli-generated unique ID for the customer.
    - `customerStatus` (integer, required) — Customer Status. Possible values: - `-99` Deleted - `0` Inactive - `1` Active - `85` Locked (typically due to multiple failed login attempts)
    - `additionalData` (map from string to string, required, nullable) — Custom dictionary of key:value pairs. You can use this field to store any data related to the object or for your system. If you are using [custom identifiers](/developers/developer-guides/entities-customers), pass those in this object. Max length for a value is 100 characters. ```json { "additionalData": { "key1": "value1", "key2": "value2", "key3": "value3" } } ```
  - `splitFundingInstructions` (list of object, required, nullable) — Split funding instructions for the transaction. The total amount of the splits must match the total amount of the transaction.
    - `accountId` (string, optional) — The accountId for the account the split should be sent to.
    - `amount` (double, optional) — Amount from the transaction to send to this recipient.
    - `description` (string, optional) — A description for the split.
    - `recipientEntryPoint` (string, optional) — The entrypoint the split should be sent to.
  - `cfeeTransactions` (list of object, required)
    - `cFeeTransid` (string, optional)
    - `feeAmount` (double, optional)
    - `operation` (string, optional)
    - `refundId` (long, optional)
    - `responseData` (map from string to any, optional)
    - `settlementStatus` (integer, optional)
    - `transactionTime` (datetime, optional) — Timestamp when transaction was submitted, in UTC.
    - `transStatus` (integer, optional)
  - `transactionEvents` (list of object, required)
    - `transEvent` (string, required)
    - `eventData` (string, required)
    - `eventTime` (string, required)
  - `riskStatus` (string, required) — Current risk status of the transaction.
  - `riskReason` (string, required) — Reason for risk flagging.
  - `riskAction` (string, required) — Action taken due to risk assessment.
  - `deviceId` (string, required) — Identifier of registered cloud device used in the transaction.
  - `achSecCode` (string, required) — Standard Entry Class (SEC) code is a three letter code that describes how an ACH payment was authorized. Supported values are: - **PPD** (Prearranged Payment and Deposit) — Used for credits or debits where an accountholder authorizes a company to initiate either a single or recurring transaction to their personal bank account. Common examples include direct deposit of payroll, mortgage payments, or utility bills. This is the default value for subscription payments. - **WEB** (Internet-Initiated/Mobile Entry) — Used for debit entries when authorization is obtained from an accountholder via the internet or a wireless network. Common examples are online bill payments, ecommerce purchases, and mobile app payments where the consumer enters their banking information online. - **TEL** (Telephone-Initiated Entry) — Used for one-time debit entries where authorization is obtained from a consumer via telephone. Common examples are phone-based purchases or bill payments where the consumer provides their banking information over the phone. - **CCD** (Corporate Credit or Debit) — Used for fund transfers between business accounts. This code is specifically for business-to-business transactions. Common examples include vendor payments and other business-to-business payments. - **BOC** (Back Office Conversion) — Used to convert paper checks received in-person at a point-of-sale or staffed payment location into electronic ACH debits. Required for Remote Deposit Capture (RDC) transactions. Only supports consumer checks; business, government, and mailed checks aren't eligible.
  - `achHolderType` (enum, required, nullable, default: personal) — The bank's accountholder type: personal or business.
    - Allowed values: `personal`, `business`
  - `ipAddress` (string, required) — The IP address associated with the transaction.
  - `isSameDayACH` (boolean, required) — Indicates if ACH transaction uses same-day processing.
  - `walletType` (string, required, nullable) — Digital wallet type if applicable.
  - `pendingFeeAmount` (double, optional) — The difference between the configured pass-through fee and the fee amount sent in the request. When transferring funds, Payabli uses this field to deduct the fee difference and transfer the correct amount to the merchant. When a paypoint is set up to absorb fees, and the pass-through fee sent with the request is less than the configured amount, the difference must be covered by the merchant. See [Fee Configuration](/guides/pay-in-payor-fees-overview#fee-configuration) to learn more about pass-through fee settings.
  - `riskFlagged` (boolean, optional) — Indicates if the transaction was flagged for risk.
  - `riskFlaggedOn` (datetime, optional) — Timestamp when the transaction was flagged for risk.
  - `riskActionCode` (integer, optional) — Numeric code representing the risk action.
- `token` (string, required, nullable) — Pagination token (equivalent to `pageIdentifier` in v1 APIs). Returns `null` when pagination is not applicable.

## Examples

### CardApproval

**Request**

```json
{
  "paymentDetails": {
    "totalAmount": 100,
    "serviceFee": 0
  },
  "paymentMethod": {
    "cardHolder": "John Cassian",
    "cardcvv": "999",
    "cardexp": "02/27",
    "cardnumber": "4111111111111111",
    "cardzip": "12345",
    "initiator": "payor",
    "method": "card"
  },
  "customerData": {
    "customerId": 4440
  },
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
}
```

**Response**

```json
{
  "code": "A0000",
  "reason": "Approved",
  "explanation": "Transaction approved",
  "action": "No action required",
  "data": {
    "parentOrgName": "Mrinal's Pet Supplies",
    "paypointDbaname": "Mrinal's Pet Shop North",
    "paypointLegalname": "Mrinal's Pet Shop North",
    "paypointEntryname": "495147f647",
    "paymentTransId": "3040-96dfa9a7c4ed4f82a3dd4a4a12ad28ae",
    "connectorName": "gp",
    "externalProcessorInformation": "",
    "gatewayTransId": "TRN_Ih68D6UZdip7OEQ2QFXat1yQSLF2nB",
    "orderId": null,
    "method": "card",
    "batchNumber": "3040_combined_20251201_3a50747d-6b5c-40ef-9f69-93a9cc7fcb49",
    "batchAmount": 420,
    "payorId": 4440,
    "paymentData": {
      "maskedAccount": "4XXXXXXXXXXX5439",
      "accountType": "visa",
      "accountExp": "12/25",
      "holderName": "John Cassian",
      "storedId": null,
      "initiator": null,
      "storedMethodUsageType": null,
      "sequence": null,
      "orderDescription": "",
      "accountId": null,
      "signatureData": null,
      "binData": {
        "binMatchedLength": "6",
        "binCardBrand": "VISA",
        "binCardType": "CREDIT",
        "binCardCategory": "CLASSIC",
        "binCardIssuer": "",
        "binCardIssuerCountry": "RUSSIAN FEDERATION",
        "binCardIssuerCountryCodeA2": "RU",
        "binCardIssuerCountryNumber": "643",
        "binCardIsRegulated": "",
        "binCardUseCategory": "",
        "binCardIssuerCountryCodeA3": ""
      },
      "paymentDetails": {
        "totalAmount": 105,
        "serviceFee": 5,
        "checkNumber": null,
        "checkUniqueId": "",
        "currency": "USD",
        "orderDescription": null,
        "orderId": null,
        "orderIdAlternative": null,
        "paymentDescription": null,
        "groupNumber": null,
        "source": null,
        "payabliTransId": null,
        "categories": [],
        "splitFunding": [],
        "checkImage": null,
        "unbundled": null
      }
    },
    "transStatus": 1,
    "paypointId": 3040,
    "totalAmount": 105,
    "netAmount": 100,
    "feeAmount": 5,
    "settlementStatus": 0,
    "operation": "Sale",
    "responseData": {
      "resultCode": "A0000",
      "resultCodeText": "Approved",
      "response": null,
      "responsetext": "CAPTURED",
      "authcode": "AXS425",
      "transactionid": "TRN_Xo4dpKfmx3OxSc9svd2ccI6OOnyB2I",
      "avsresponse": "N",
      "avsresponse_text": "No Match, No address or ZIP match",
      "cvvresponse": "M",
      "cvvresponse_text": "CVV2/CVC2 match",
      "orderid": null,
      "response_code": "100",
      "response_code_text": "Operation successful",
      "customer_vault_id": null,
      "emv_auth_response_data": null,
      "type": null
    },
    "source": "api",
    "scheduleReference": 0,
    "orgId": 123,
    "refundId": 0,
    "returnedId": 0,
    "chargebackId": 0,
    "retrievalId": 0,
    "invoiceData": {
      "invoiceNumber": null,
      "invoiceDate": null,
      "invoiceDueDate": null,
      "invoiceEndDate": null,
      "invoiceStatus": null,
      "invoiceType": null,
      "frequency": null,
      "paymentTerms": null,
      "termsConditions": null,
      "notes": null,
      "tax": null,
      "discount": null,
      "invoiceAmount": null,
      "freightAmount": null,
      "dutyAmount": null,
      "purchaseOrder": null,
      "firstName": null,
      "lastName": null,
      "company": null,
      "shippingAddress1": null,
      "shippingAddress2": null,
      "shippingCity": null,
      "shippingState": null,
      "shippingZip": null,
      "shippingCountry": null,
      "shippingEmail": null,
      "shippingPhone": null,
      "shippingFromZip": null,
      "summaryCommodityCode": null,
      "items": null,
      "attachments": null,
      "additionalData": null
    },
    "entrypageId": 0,
    "externalPaypointID": "",
    "isValidatedACH": false,
    "transactionTime": "2025-12-01T09:50:03.559",
    "customer": {
      "identifiers": null,
      "firstName": "David",
      "lastName": "Beckham",
      "companyName": "Driving School LLC",
      "billingAddress1": "Home Address",
      "billingAddress2": "",
      "billingCity": "",
      "billingState": "",
      "billingZip": "45157",
      "billingCountry": "US",
      "billingPhone": "+15555555555",
      "billingEmail": "example@payabli.com",
      "customerNumber": "C-90010",
      "shippingAddress1": "Home Address",
      "shippingAddress2": "",
      "shippingCity": "",
      "shippingState": "",
      "shippingZip": "45157",
      "shippingCountry": "US",
      "customerId": 4440,
      "customerStatus": 0,
      "additionalData": null
    },
    "splitFundingInstructions": null,
    "cfeeTransactions": [
      {
        "cFeeTransid": "3040-96dfa9a7c4ed4f82a3dd4a4a12ad28ae",
        "feeAmount": 5,
        "operation": "Sale",
        "refundId": 0,
        "responseData": {},
        "settlementStatus": 0,
        "transactionTime": "2025-12-01T09:50:03.559",
        "transStatus": 1
      }
    ],
    "transactionEvents": [
      {
        "transEvent": "Created",
        "eventData": "0HNHD68HATSUC:00000001",
        "eventTime": "2025-12-01T09:50:02.558651"
      },
      {
        "transEvent": "Approved",
        "eventData": "0HNHD68HATSUC:00000001",
        "eventTime": "2025-12-01T09:50:03.609111"
      }
    ],
    "riskStatus": "PASSED",
    "riskReason": "",
    "riskAction": "",
    "deviceId": "",
    "achSecCode": "",
    "achHolderType": "personal",
    "ipAddress": "255.255.255.255",
    "isSameDayACH": false,
    "walletType": null,
    "pendingFeeAmount": 0,
    "riskFlagged": false,
    "riskFlaggedOn": "2025-12-01T09:50:02.5474568",
    "riskActionCode": 0,
    "transAdditionalData": null
  },
  "token": null
}
```

**SDK Code**

```typescript CardApproval
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient();
    await client.moneyIn.getpaidv2({
        body: {
            paymentDetails: {
                totalAmount: 100,
                serviceFee: 0,
            },
            paymentMethod: {
                cardHolder: "John Cassian",
                cardcvv: "999",
                cardexp: "02/27",
                cardnumber: "4111111111111111",
                cardzip: "12345",
                initiator: "payor",
                method: "card",
            },
            customerData: {
                customerId: 4440,
            },
            entryPoint: "8cfec329267",
            ipaddress: "255.255.255.255",
        },
    });
}
main();

```

```python CardApproval
from payabli import payabli, PaymentDetail, PayMethodCredit, PayorDataRequest

client = payabli()

client.money_in.getpaidv_2(
    payment_details=PaymentDetail(
        total_amount=100,
        service_fee=0,
    ),
    payment_method=PayMethodCredit(
        card_holder="John Cassian",
        cardcvv="999",
        cardexp="02/27",
        cardnumber="4111111111111111",
        cardzip="12345",
        initiator="payor",
        method="card",
    ),
    customer_data=PayorDataRequest(
        customer_id=4440,
    ),
    entry_point="8cfec329267",
    ipaddress="255.255.255.255",
)

```

```java CardApproval
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.moneyin.requests.RequestPaymentV2;
import io.github.payabli.api.types.PayMethodCredit;
import io.github.payabli.api.types.PayMethodCreditMethod;
import io.github.payabli.api.types.PaymentDetail;
import io.github.payabli.api.types.PaymentMethod;
import io.github.payabli.api.types.PayorDataRequest;
import io.github.payabli.api.types.TransRequestBody;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.moneyIn().getpaidv2(
            RequestPaymentV2
                .builder()
                .body(
                    TransRequestBody
                        .builder()
                        .paymentDetails(
                            PaymentDetail
                                .builder()
                                .totalAmount(100.0)
                                .serviceFee(0.0)
                                .build()
                        )
                        .paymentMethod(
                            PaymentMethod.of(
                                PayMethodCredit
                                    .builder()
                                    .cardexp("02/27")
                                    .cardnumber("4111111111111111")
                                    .method(PayMethodCreditMethod.CARD)
                                    .cardcvv(Optional.of("999"))
                                    .cardHolder(Optional.of("John Cassian"))
                                    .cardzip(Optional.of("12345"))
                                    .initiator(Optional.of("payor"))
                                    .build()
                            )
                        )
                        .customerData(
                            PayorDataRequest
                                .builder()
                                .customerId(4440L)
                                .build()
                        )
                        .entryPoint("8cfec329267")
                        .ipaddress("255.255.255.255")
                        .build()
                )
                .build()
        );
    }
}
```

```ruby CardApproval
require "payabli"

client = Payabli::Client.new

client.money_in.getpaidv_2(
  customer_data: {
    customer_id: 4440
  },
  entry_point: "8cfec329267",
  ipaddress: "255.255.255.255",
  payment_details: {
    total_amount: 100,
    service_fee: 0
  },
  payment_method: {
    card_holder: "John Cassian",
    cardcvv: "999",
    cardexp: "02/27",
    cardnumber: "4111111111111111",
    cardzip: "12345",
    initiator: "payor",
    method_: "card"
  }
)

```

```csharp CardApproval
using PayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliApiClient();

        await client.MoneyIn.Getpaidv2Async(
            new RequestPaymentV2 {
                Body = new TransRequestBody {
                    PaymentDetails = new PaymentDetail {
                        TotalAmount = 100,
                        ServiceFee = 0
                    },
                    PaymentMethod = new PayMethodCredit {
                        CardHolder = "John Cassian",
                        Cardcvv = "999",
                        Cardexp = "02/27",
                        Cardnumber = "4111111111111111",
                        Cardzip = "12345",
                        Initiator = "payor",
                        Method = PayMethodCreditMethod.Card
                    },
                    CustomerData = new PayorDataRequest {
                        CustomerId = 4440L
                    },
                    EntryPoint = "8cfec329267",
                    Ipaddress = "255.255.255.255"
                }
            }
        );
    }

}

```

```go CardApproval
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
)

func do() {
    client := client.NewClient()
    request := &payabli.RequestPaymentV2{
        Body: &payabli.TransRequestBody{
            PaymentDetails: &payabli.PaymentDetail{
                TotalAmount: 100,
                ServiceFee: payabli.Float64(
                    0,
                ),
            },
            PaymentMethod: &payabli.PaymentMethod{
                PayMethodCredit: &payabli.PayMethodCredit{
                    CardHolder: payabli.String(
                        "John Cassian",
                    ),
                    Cardcvv: payabli.String(
                        "999",
                    ),
                    Cardexp: "02/27",
                    Cardnumber: "4111111111111111",
                    Cardzip: payabli.String(
                        "12345",
                    ),
                    Initiator: payabli.String(
                        "payor",
                    ),
                    Method: payabli.PayMethodCreditMethodCard,
                },
            },
            CustomerData: &payabli.PayorDataRequest{
                CustomerId: payabli.Int64(
                    int64(4440),
                ),
            },
            EntryPoint: payabli.String(
                "8cfec329267",
            ),
            Ipaddress: payabli.String(
                "255.255.255.255",
            ),
        },
    }
    client.MoneyIn.Getpaidv2(
        context.TODO(),
        request,
    )
}

```

```php CardApproval
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\MoneyIn\Requests\RequestPaymentV2;
use Payabli\Types\TransRequestBody;
use Payabli\Types\PaymentDetail;
use Payabli\Types\PayMethodCredit;
use Payabli\Types\PayMethodCreditMethod;
use Payabli\Types\PayorDataRequest;

$client = new PayabliClient();
$client->moneyIn->getpaidv2(
    new RequestPaymentV2([
        'body' => new TransRequestBody([
            'paymentDetails' => new PaymentDetail([
                'totalAmount' => 100,
                'serviceFee' => 0,
            ]),
            'paymentMethod' => new PayMethodCredit([
                'cardHolder' => 'John Cassian',
                'cardcvv' => '999',
                'cardexp' => '02/27',
                'cardnumber' => '4111111111111111',
                'cardzip' => '12345',
                'initiator' => 'payor',
                'method' => PayMethodCreditMethod::Card->value,
            ]),
            'customerData' => new PayorDataRequest([
                'customerId' => 4440,
            ]),
            'entryPoint' => '8cfec329267',
            'ipaddress' => '255.255.255.255',
        ]),
    ]),
);

```

```swift CardApproval
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "paymentDetails": [
    "totalAmount": 100,
    "serviceFee": 0
  ],
  "paymentMethod": [
    "cardHolder": "John Cassian",
    "cardcvv": "999",
    "cardexp": "02/27",
    "cardnumber": "4111111111111111",
    "cardzip": "12345",
    "initiator": "payor",
    "method": "card"
  ],
  "customerData": ["customerId": 4440],
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/MoneyIn/getpaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### StoredMethodApproval

**Request**

```json
{
  "paymentDetails": {
    "totalAmount": 100,
    "serviceFee": 0
  },
  "paymentMethod": {
    "initiator": "payor",
    "method": "card",
    "storedMethodId": "1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440",
    "storedMethodUsageType": "unscheduled"
  },
  "customerData": {
    "customerId": 4440
  },
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
}
```

**Response**

```json
{
  "code": "A0000",
  "reason": "Approved",
  "explanation": "Transaction approved",
  "action": "No action required",
  "data": {
    "parentOrgName": "Mrinal's Pet Supplies",
    "paypointDbaname": "Mrinal's Pet Shop North",
    "paypointLegalname": "Mrinal's Pet Shop North",
    "paypointEntryname": "495147f647",
    "paymentTransId": "3040-9708542b00354726ad8a6b0c65bc7a54",
    "connectorName": "gp",
    "externalProcessorInformation": "",
    "gatewayTransId": "TRN_Xo4dpKfmx3OxSc9svd2ccI6OOnyB2I",
    "orderId": null,
    "method": "card",
    "batchNumber": "3040_combined_20251201_3a50747d-6b5c-40ef-9f69-93a9cc7fcb49",
    "batchAmount": 630,
    "payorId": 4440,
    "paymentData": {
      "maskedAccount": "3XXXXXXXXXX0227",
      "accountType": "amex",
      "accountExp": "12/25",
      "holderName": "Alexa Amazon",
      "storedId": "fb1f5ec2-1ba4-4ba6-9839-20c2cc4baf5a-4440",
      "initiator": "merchant",
      "storedMethodUsageType": "unscheduled",
      "sequence": "subsequent",
      "orderDescription": "",
      "accountId": null,
      "signatureData": null,
      "binData": {
        "binMatchedLength": "",
        "binCardBrand": "",
        "binCardType": "",
        "binCardCategory": "",
        "binCardIssuer": "",
        "binCardIssuerCountry": "",
        "binCardIssuerCountryCodeA2": "",
        "binCardIssuerCountryNumber": "",
        "binCardIsRegulated": "",
        "binCardUseCategory": "",
        "binCardIssuerCountryCodeA3": ""
      },
      "paymentDetails": {
        "totalAmount": 105,
        "serviceFee": 5,
        "checkNumber": null,
        "checkUniqueId": "",
        "currency": "USD",
        "orderDescription": null,
        "orderId": null,
        "orderIdAlternative": null,
        "paymentDescription": null,
        "groupNumber": null,
        "source": null,
        "payabliTransId": null,
        "categories": [],
        "splitFunding": [],
        "checkImage": null,
        "unbundled": null
      }
    },
    "transStatus": 1,
    "paypointId": 3040,
    "totalAmount": 105,
    "netAmount": 100,
    "feeAmount": 5,
    "settlementStatus": 0,
    "operation": "Sale",
    "responseData": {
      "resultCode": "A0000",
      "resultCodeText": "Approved",
      "response": null,
      "responsetext": "CAPTURED",
      "authcode": "AXS425",
      "transactionid": "TRN_Xo4dpKfmx3OxSc9svd2ccI6OOnyB2I",
      "avsresponse": "N",
      "avsresponse_text": "No Match, No address or ZIP match",
      "cvvresponse": "M",
      "cvvresponse_text": "CVV2/CVC2 match",
      "orderid": null,
      "response_code": "100",
      "response_code_text": "Operation successful",
      "customer_vault_id": null,
      "emv_auth_response_data": null,
      "type": null
    },
    "source": "api",
    "scheduleReference": 0,
    "orgId": 123,
    "refundId": 0,
    "returnedId": 0,
    "chargebackId": 0,
    "retrievalId": 0,
    "invoiceData": {
      "invoiceNumber": null,
      "invoiceDate": null,
      "invoiceDueDate": null,
      "invoiceEndDate": null,
      "invoiceStatus": null,
      "invoiceType": null,
      "frequency": null,
      "paymentTerms": null,
      "termsConditions": null,
      "notes": null,
      "tax": null,
      "discount": null,
      "invoiceAmount": null,
      "freightAmount": null,
      "dutyAmount": null,
      "purchaseOrder": null,
      "firstName": null,
      "lastName": null,
      "company": null,
      "shippingAddress1": null,
      "shippingAddress2": null,
      "shippingCity": null,
      "shippingState": null,
      "shippingZip": null,
      "shippingCountry": null,
      "shippingEmail": null,
      "shippingPhone": null,
      "shippingFromZip": null,
      "summaryCommodityCode": null,
      "items": null,
      "attachments": null,
      "additionalData": null
    },
    "entrypageId": 0,
    "externalPaypointID": "",
    "isValidatedACH": false,
    "transactionTime": "2025-12-01T09:56:33.967",
    "customer": {
      "identifiers": null,
      "firstName": "David",
      "lastName": "Beckham",
      "companyName": "Driving School LLC",
      "billingAddress1": "Home Address",
      "billingAddress2": "",
      "billingCity": "",
      "billingState": "",
      "billingZip": "45157",
      "billingCountry": "US",
      "billingPhone": "+15555555555",
      "billingEmail": "example@payabli.com",
      "customerNumber": "C-90010",
      "shippingAddress1": "Home Address",
      "shippingAddress2": "",
      "shippingCity": "",
      "shippingState": "",
      "shippingZip": "45157",
      "shippingCountry": "US",
      "customerId": 4440,
      "customerStatus": 0,
      "additionalData": null
    },
    "splitFundingInstructions": null,
    "cfeeTransactions": [
      {
        "cFeeTransid": "3040-9708542b00354726ad8a6b0c65bc7a54",
        "feeAmount": 5,
        "operation": "Sale",
        "refundId": 0,
        "responseData": {},
        "settlementStatus": 0,
        "transactionTime": "2025-12-01T09:56:33.967",
        "transStatus": 1
      }
    ],
    "transactionEvents": [
      {
        "transEvent": "Created",
        "eventData": "0HNHD68HATSUR:00000004",
        "eventTime": "2025-12-01T09:56:32.662988"
      },
      {
        "transEvent": "Approved",
        "eventData": "0HNHD68HATSUR:00000004",
        "eventTime": "2025-12-01T09:56:34.027504"
      }
    ],
    "riskStatus": "PASSED",
    "riskReason": "",
    "riskAction": "",
    "deviceId": "",
    "achSecCode": "",
    "achHolderType": "personal",
    "ipAddress": "255.255.255.255",
    "isSameDayACH": false,
    "walletType": null,
    "pendingFeeAmount": 0,
    "riskFlagged": false,
    "riskFlaggedOn": "2025-12-01T09:56:32.6525967",
    "riskActionCode": 0,
    "transAdditionalData": null
  },
  "token": null
}
```

**SDK Code**

```typescript StoredMethodApproval
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient();
    await client.moneyIn.getpaidv2({
        body: {
            paymentDetails: {
                totalAmount: 100,
                serviceFee: 0,
            },
            paymentMethod: {
                initiator: "payor",
                method: "card",
                storedMethodId: "1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440",
                storedMethodUsageType: "unscheduled",
            },
            customerData: {
                customerId: 4440,
            },
            entryPoint: "8cfec329267",
            ipaddress: "255.255.255.255",
        },
    });
}
main();

```

```python StoredMethodApproval
from payabli import payabli, PaymentDetail, PayMethodStoredMethod, PayorDataRequest

client = payabli()

client.money_in.getpaidv_2(
    payment_details=PaymentDetail(
        total_amount=100,
        service_fee=0,
    ),
    payment_method=PayMethodStoredMethod(
        initiator="payor",
        method="card",
        stored_method_id="1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440",
        stored_method_usage_type="unscheduled",
    ),
    customer_data=PayorDataRequest(
        customer_id=4440,
    ),
    entry_point="8cfec329267",
    ipaddress="255.255.255.255",
)

```

```java StoredMethodApproval
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.moneyin.requests.RequestPaymentV2;
import io.github.payabli.api.types.PayMethodStoredMethod;
import io.github.payabli.api.types.PayMethodStoredMethodMethod;
import io.github.payabli.api.types.PaymentDetail;
import io.github.payabli.api.types.PaymentMethod;
import io.github.payabli.api.types.PayorDataRequest;
import io.github.payabli.api.types.TransRequestBody;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.moneyIn().getpaidv2(
            RequestPaymentV2
                .builder()
                .body(
                    TransRequestBody
                        .builder()
                        .paymentDetails(
                            PaymentDetail
                                .builder()
                                .totalAmount(100.0)
                                .serviceFee(0.0)
                                .build()
                        )
                        .paymentMethod(
                            PaymentMethod.of(
                                PayMethodStoredMethod
                                    .builder()
                                    .method(PayMethodStoredMethodMethod.CARD)
                                    .initiator(Optional.of("payor"))
                                    .storedMethodId(Optional.of("1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440"))
                                    .storedMethodUsageType(Optional.of("unscheduled"))
                                    .build()
                            )
                        )
                        .customerData(
                            PayorDataRequest
                                .builder()
                                .customerId(4440L)
                                .build()
                        )
                        .entryPoint("8cfec329267")
                        .ipaddress("255.255.255.255")
                        .build()
                )
                .build()
        );
    }
}
```

```ruby StoredMethodApproval
require "payabli"

client = Payabli::Client.new

client.money_in.getpaidv_2(
  customer_data: {
    customer_id: 4440
  },
  entry_point: "8cfec329267",
  ipaddress: "255.255.255.255",
  payment_details: {
    total_amount: 100,
    service_fee: 0
  },
  payment_method: {
    initiator: "payor",
    method_: "card",
    cardexp: "string",
    cardnumber: "string"
  }
)

```

```csharp StoredMethodApproval
using PayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliApiClient();

        await client.MoneyIn.Getpaidv2Async(
            new RequestPaymentV2 {
                Body = new TransRequestBody {
                    PaymentDetails = new PaymentDetail {
                        TotalAmount = 100,
                        ServiceFee = 0
                    },
                    PaymentMethod = new PayMethodStoredMethod {
                        Initiator = "payor",
                        Method = PayMethodStoredMethodMethod.Card,
                        StoredMethodId = "1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440",
                        StoredMethodUsageType = "unscheduled"
                    },
                    CustomerData = new PayorDataRequest {
                        CustomerId = 4440L
                    },
                    EntryPoint = "8cfec329267",
                    Ipaddress = "255.255.255.255"
                }
            }
        );
    }

}

```

```go StoredMethodApproval
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
)

func do() {
    client := client.NewClient()
    request := &payabli.RequestPaymentV2{
        Body: &payabli.TransRequestBody{
            PaymentDetails: &payabli.PaymentDetail{
                TotalAmount: 100,
                ServiceFee: payabli.Float64(
                    0,
                ),
            },
            PaymentMethod: &payabli.PaymentMethod{
                PayMethodStoredMethod: &payabli.PayMethodStoredMethod{
                    Initiator: payabli.String(
                        "payor",
                    ),
                    Method: payabli.PayMethodStoredMethodMethodCard,
                    StoredMethodId: payabli.String(
                        "1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440",
                    ),
                    StoredMethodUsageType: payabli.String(
                        "unscheduled",
                    ),
                },
            },
            CustomerData: &payabli.PayorDataRequest{
                CustomerId: payabli.Int64(
                    int64(4440),
                ),
            },
            EntryPoint: payabli.String(
                "8cfec329267",
            ),
            Ipaddress: payabli.String(
                "255.255.255.255",
            ),
        },
    }
    client.MoneyIn.Getpaidv2(
        context.TODO(),
        request,
    )
}

```

```php StoredMethodApproval
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\MoneyIn\Requests\RequestPaymentV2;
use Payabli\Types\TransRequestBody;
use Payabli\Types\PaymentDetail;
use Payabli\Types\PayMethodCredit;
use Payabli\Types\PayMethodCreditMethod;
use Payabli\Types\PayorDataRequest;

$client = new PayabliClient();
$client->moneyIn->getpaidv2(
    new RequestPaymentV2([
        'body' => new TransRequestBody([
            'paymentDetails' => new PaymentDetail([
                'totalAmount' => 100,
                'serviceFee' => 0,
            ]),
            'paymentMethod' => new PayMethodCredit([
                'initiator' => 'payor',
                'method' => PayMethodCreditMethod::Card->value,
                'cardexp' => 'value',
                'cardnumber' => 'value',
            ]),
            'customerData' => new PayorDataRequest([
                'customerId' => 4440,
            ]),
            'entryPoint' => '8cfec329267',
            'ipaddress' => '255.255.255.255',
        ]),
    ]),
);

```

```swift StoredMethodApproval
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "paymentDetails": [
    "totalAmount": 100,
    "serviceFee": 0
  ],
  "paymentMethod": [
    "initiator": "payor",
    "method": "card",
    "storedMethodId": "1ec55af9-7b5a-4ff0-81ed-c12d2f95e135-4440",
    "storedMethodUsageType": "unscheduled"
  ],
  "customerData": ["customerId": 4440],
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/MoneyIn/getpaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### ACHApproval

**Request**

```json
{
  "paymentDetails": {
    "totalAmount": 100,
    "serviceFee": 0
  },
  "paymentMethod": {
    "achAccount": "123123123",
    "achAccountType": "Checking",
    "achCode": "WEB",
    "achHolder": "John Cassian",
    "achHolderType": "personal",
    "achRouting": "123123123",
    "method": "ach"
  },
  "customerData": {
    "customerId": 4440
  },
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
}
```

**Response**

```json
{
  "code": "A0000",
  "reason": "Approved",
  "explanation": "Transaction approved",
  "action": "No action required",
  "data": {
    "parentOrgName": "Mountain View Services",
    "paypointDbaname": "Mountain View Auto",
    "paypointLegalname": "Mountain View Automotive Services LLC",
    "paypointEntryname": "31ae451b89",
    "paymentTransId": "2145-7b8fa3c9d5e64f73b2ee5a6b14bd39cd",
    "connectorName": "checkcommerce",
    "externalProcessorInformation": "",
    "gatewayTransId": "ACH_TRN_8K92D7VZexp8PFR3RGYbu2zRTMG3oC",
    "orderId": null,
    "method": "ach",
    "batchNumber": "checkcommerce_2145_ach_12-01-2025",
    "batchAmount": 525,
    "payorId": 38267,
    "paymentData": {
      "maskedAccount": "XXXXX4532",
      "accountType": "Checking",
      "accountExp": null,
      "holderName": "Sarah Martinez",
      "storedId": null,
      "initiator": null,
      "storedMethodUsageType": null,
      "sequence": null,
      "orderDescription": "",
      "accountId": null,
      "signatureData": null,
      "binData": null,
      "paymentDetails": {
        "totalAmount": 105,
        "serviceFee": 5,
        "checkNumber": null,
        "checkUniqueId": "",
        "currency": "USD",
        "orderDescription": null,
        "orderId": null,
        "orderIdAlternative": null,
        "paymentDescription": null,
        "groupNumber": null,
        "source": null,
        "payabliTransId": null,
        "categories": [],
        "splitFunding": [],
        "checkImage": null,
        "unbundled": null
      }
    },
    "transStatus": 1,
    "paypointId": 3040,
    "totalAmount": 105,
    "netAmount": 100,
    "feeAmount": 5,
    "settlementStatus": 0,
    "operation": "Sale",
    "responseData": {
      "resultCode": "A0000",
      "resultCodeText": "Approved",
      "response": null,
      "responsetext": "CAPTURED",
      "authcode": "AXS425",
      "transactionid": "TRN_Xo4dpKfmx3OxSc9svd2ccI6OOnyB2I",
      "avsresponse": "N",
      "avsresponse_text": "No Match, No address or ZIP match",
      "cvvresponse": "M",
      "cvvresponse_text": "CVV2/CVC2 match",
      "orderid": null,
      "response_code": "100",
      "response_code_text": "Operation successful",
      "customer_vault_id": null,
      "emv_auth_response_data": null,
      "type": null
    },
    "source": "api",
    "scheduleReference": 0,
    "orgId": 123,
    "refundId": 0,
    "returnedId": 0,
    "chargebackId": 0,
    "retrievalId": 0,
    "invoiceData": {
      "invoiceNumber": null,
      "invoiceDate": null,
      "invoiceDueDate": null,
      "invoiceEndDate": null,
      "invoiceStatus": null,
      "invoiceType": null,
      "frequency": null,
      "paymentTerms": null,
      "termsConditions": null,
      "notes": null,
      "tax": null,
      "discount": null,
      "invoiceAmount": null,
      "freightAmount": null,
      "dutyAmount": null,
      "purchaseOrder": null,
      "firstName": null,
      "lastName": null,
      "company": null,
      "shippingAddress1": null,
      "shippingAddress2": null,
      "shippingCity": null,
      "shippingState": null,
      "shippingZip": null,
      "shippingCountry": null,
      "shippingEmail": null,
      "shippingPhone": null,
      "shippingFromZip": null,
      "summaryCommodityCode": null,
      "items": null,
      "attachments": null,
      "additionalData": null
    },
    "entrypageId": 0,
    "externalPaypointID": "",
    "isValidatedACH": true,
    "transactionTime": "2025-12-01T10:15:28.742",
    "customer": {
      "identifiers": null,
      "firstName": "Sarah",
      "lastName": "Martinez",
      "companyName": "Martinez Consulting",
      "billingAddress1": "456 Oak Avenue",
      "billingAddress2": "Suite 201",
      "billingCity": "Portland",
      "billingState": "OR",
      "billingZip": "97201",
      "billingCountry": "US",
      "billingPhone": "+15035551234",
      "billingEmail": "sarah.martinez@example.com",
      "customerNumber": "C-90010",
      "shippingAddress1": "456 Oak Avenue",
      "shippingAddress2": "Suite 201",
      "shippingCity": "Portland",
      "shippingState": "OR",
      "shippingZip": "97201",
      "shippingCountry": "US",
      "customerId": 4440,
      "customerStatus": 0,
      "additionalData": null
    },
    "splitFundingInstructions": null,
    "cfeeTransactions": [
      {
        "cFeeTransid": "2145-7b8fa3c9d5e64f73b2ee5a6b14bd39cd",
        "feeAmount": 5,
        "operation": "Sale",
        "refundId": 0,
        "responseData": {},
        "settlementStatus": 0,
        "transactionTime": "2025-12-01T10:15:28.742",
        "transStatus": 1
      }
    ],
    "transactionEvents": [
      {
        "transEvent": "Created",
        "eventData": "0HNHD69JBVWXP:00000001",
        "eventTime": "2025-12-01T10:15:27.682442"
      },
      {
        "transEvent": "Approved",
        "eventData": "0HNHD69JBVWXP:00000001",
        "eventTime": "2025-12-01T10:15:28.751283"
      }
    ],
    "riskStatus": "PASSED",
    "riskReason": "",
    "riskAction": "",
    "deviceId": "",
    "achSecCode": "WEB",
    "achHolderType": "personal",
    "ipAddress": "255.255.255.255",
    "isSameDayACH": false,
    "walletType": null,
    "pendingFeeAmount": 0,
    "riskFlagged": false,
    "riskFlaggedOn": "2025-12-01T10:15:27.6712346",
    "riskActionCode": 0,
    "transAdditionalData": null
  },
  "token": null
}
```

**SDK Code**

```typescript ACHApproval
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient();
    await client.moneyIn.getpaidv2({
        body: {
            paymentDetails: {
                totalAmount: 100,
                serviceFee: 0,
            },
            paymentMethod: {
                achAccount: "123123123",
                achAccountType: "Checking",
                achCode: "WEB",
                achHolder: "John Cassian",
                achHolderType: "personal",
                achRouting: "123123123",
                method: "ach",
            },
            customerData: {
                customerId: 4440,
            },
            entryPoint: "8cfec329267",
            ipaddress: "255.255.255.255",
        },
    });
}
main();

```

```python ACHApproval
from payabli import payabli, PaymentDetail, PayMethodAch, PayorDataRequest

client = payabli()

client.money_in.getpaidv_2(
    payment_details=PaymentDetail(
        total_amount=100,
        service_fee=0,
    ),
    payment_method=PayMethodAch(
        ach_account="123123123",
        ach_account_type="Checking",
        ach_code="WEB",
        ach_holder="John Cassian",
        ach_holder_type="personal",
        ach_routing="123123123",
        method="ach",
    ),
    customer_data=PayorDataRequest(
        customer_id=4440,
    ),
    entry_point="8cfec329267",
    ipaddress="255.255.255.255",
)

```

```java ACHApproval
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.moneyin.requests.RequestPaymentV2;
import io.github.payabli.api.types.AchHolderType;
import io.github.payabli.api.types.Achaccounttype;
import io.github.payabli.api.types.PayMethodAch;
import io.github.payabli.api.types.PayMethodAchMethod;
import io.github.payabli.api.types.PaymentDetail;
import io.github.payabli.api.types.PaymentMethod;
import io.github.payabli.api.types.PayorDataRequest;
import io.github.payabli.api.types.TransRequestBody;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.moneyIn().getpaidv2(
            RequestPaymentV2
                .builder()
                .body(
                    TransRequestBody
                        .builder()
                        .paymentDetails(
                            PaymentDetail
                                .builder()
                                .totalAmount(100.0)
                                .serviceFee(0.0)
                                .build()
                        )
                        .paymentMethod(
                            PaymentMethod.of(
                                PayMethodAch
                                    .builder()
                                    .achAccount("123123123")
                                    .achHolder("John Cassian")
                                    .achRouting("123123123")
                                    .method(PayMethodAchMethod.ACH)
                                    .achAccountType(Optional.of(Achaccounttype.CHECKING))
                                    .achCode(Optional.of("WEB"))
                                    .achHolderType(Optional.of(AchHolderType.PERSONAL))
                                    .build()
                            )
                        )
                        .customerData(
                            PayorDataRequest
                                .builder()
                                .customerId(4440L)
                                .build()
                        )
                        .entryPoint("8cfec329267")
                        .ipaddress("255.255.255.255")
                        .build()
                )
                .build()
        );
    }
}
```

```ruby ACHApproval
require "payabli"

client = Payabli::Client.new

client.money_in.getpaidv_2(
  customer_data: {
    customer_id: 4440
  },
  entry_point: "8cfec329267",
  ipaddress: "255.255.255.255",
  payment_details: {
    total_amount: 100,
    service_fee: 0
  },
  payment_method: {
    method_: "ach",
    cardexp: "string",
    cardnumber: "string"
  }
)

```

```csharp ACHApproval
using PayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliApiClient();

        await client.MoneyIn.Getpaidv2Async(
            new RequestPaymentV2 {
                Body = new TransRequestBody {
                    PaymentDetails = new PaymentDetail {
                        TotalAmount = 100,
                        ServiceFee = 0
                    },
                    PaymentMethod = new PayMethodAch {
                        AchAccount = "123123123",
                        AchAccountType = Achaccounttype.Checking,
                        AchCode = "WEB",
                        AchHolder = "John Cassian",
                        AchHolderType = AchHolderType.Personal,
                        AchRouting = "123123123",
                        Method = PayMethodAchMethod.Ach
                    },
                    CustomerData = new PayorDataRequest {
                        CustomerId = 4440L
                    },
                    EntryPoint = "8cfec329267",
                    Ipaddress = "255.255.255.255"
                }
            }
        );
    }

}

```

```go ACHApproval
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
)

func do() {
    client := client.NewClient()
    request := &payabli.RequestPaymentV2{
        Body: &payabli.TransRequestBody{
            PaymentDetails: &payabli.PaymentDetail{
                TotalAmount: 100,
                ServiceFee: payabli.Float64(
                    0,
                ),
            },
            PaymentMethod: &payabli.PaymentMethod{
                PayMethodAch: &payabli.PayMethodAch{
                    AchAccount: "123123123",
                    AchAccountType: payabli.AchaccounttypeChecking.Ptr(),
                    AchCode: payabli.String(
                        "WEB",
                    ),
                    AchHolder: "John Cassian",
                    AchHolderType: payabli.AchHolderTypePersonal.Ptr(),
                    AchRouting: "123123123",
                    Method: payabli.PayMethodAchMethodAch,
                },
            },
            CustomerData: &payabli.PayorDataRequest{
                CustomerId: payabli.Int64(
                    int64(4440),
                ),
            },
            EntryPoint: payabli.String(
                "8cfec329267",
            ),
            Ipaddress: payabli.String(
                "255.255.255.255",
            ),
        },
    }
    client.MoneyIn.Getpaidv2(
        context.TODO(),
        request,
    )
}

```

```php ACHApproval
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\MoneyIn\Requests\RequestPaymentV2;
use Payabli\Types\TransRequestBody;
use Payabli\Types\PaymentDetail;
use Payabli\Types\PayMethodCredit;
use Payabli\Types\PayorDataRequest;

$client = new PayabliClient();
$client->moneyIn->getpaidv2(
    new RequestPaymentV2([
        'body' => new TransRequestBody([
            'paymentDetails' => new PaymentDetail([
                'totalAmount' => 100,
                'serviceFee' => 0,
            ]),
            'paymentMethod' => new PayMethodCredit([
                'cardexp' => 'value',
                'cardnumber' => 'value',
            ]),
            'customerData' => new PayorDataRequest([
                'customerId' => 4440,
            ]),
            'entryPoint' => '8cfec329267',
            'ipaddress' => '255.255.255.255',
        ]),
    ]),
);

```

```swift ACHApproval
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "paymentDetails": [
    "totalAmount": 100,
    "serviceFee": 0
  ],
  "paymentMethod": [
    "achAccount": "123123123",
    "achAccountType": "Checking",
    "achCode": "WEB",
    "achHolder": "John Cassian",
    "achHolderType": "personal",
    "achRouting": "123123123",
    "method": "ach"
  ],
  "customerData": ["customerId": 4440],
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/MoneyIn/getpaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### CloudApproval

**Request**

```json
{
  "paymentDetails": {
    "totalAmount": 100,
    "serviceFee": 0
  },
  "paymentMethod": {
    "device": "6c361c7d-674c-44cc-b790-382b75d1xxx",
    "method": "cloud",
    "saveIfSuccess": true
  },
  "customerData": {
    "customerId": 4440
  },
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
}
```

**Response**

```json
{
  "code": "A0000",
  "reason": "Approved",
  "explanation": "Transaction approved",
  "action": "No action required",
  "data": {
    "parentOrgName": "Mrinal's Pet Supplies",
    "paypointDbaname": "Mrinal's Pet Shop North",
    "paypointLegalname": "Mrinal's Pet Shop North",
    "paypointEntryname": "495147f647",
    "paymentTransId": "3040-96dfa9a7c4ed4f82a3dd4a4a12ad28ae",
    "connectorName": "gp",
    "externalProcessorInformation": "",
    "gatewayTransId": "TRN_Ih68D6UZdip7OEQ2QFXat1yQSLF2nB",
    "orderId": null,
    "method": "card",
    "batchNumber": "3040_combined_20251201_3a50747d-6b5c-40ef-9f69-93a9cc7fcb49",
    "batchAmount": 420,
    "payorId": 4440,
    "paymentData": {
      "maskedAccount": "4XXXXXXXXXXX5439",
      "accountType": "visa",
      "accountExp": "12/25",
      "holderName": "John Cassian",
      "storedId": null,
      "initiator": null,
      "storedMethodUsageType": null,
      "sequence": null,
      "orderDescription": "",
      "accountId": null,
      "signatureData": null,
      "binData": {
        "binMatchedLength": "6",
        "binCardBrand": "VISA",
        "binCardType": "CREDIT",
        "binCardCategory": "CLASSIC",
        "binCardIssuer": "",
        "binCardIssuerCountry": "RUSSIAN FEDERATION",
        "binCardIssuerCountryCodeA2": "RU",
        "binCardIssuerCountryNumber": "643",
        "binCardIsRegulated": "",
        "binCardUseCategory": "",
        "binCardIssuerCountryCodeA3": ""
      },
      "paymentDetails": {
        "totalAmount": 105,
        "serviceFee": 5,
        "checkNumber": null,
        "checkUniqueId": "",
        "currency": "USD",
        "orderDescription": null,
        "orderId": null,
        "orderIdAlternative": null,
        "paymentDescription": null,
        "groupNumber": null,
        "source": null,
        "payabliTransId": null,
        "categories": [],
        "splitFunding": [],
        "checkImage": null,
        "unbundled": null
      }
    },
    "transStatus": 1,
    "paypointId": 3040,
    "totalAmount": 105,
    "netAmount": 100,
    "feeAmount": 5,
    "settlementStatus": 0,
    "operation": "Sale",
    "responseData": {
      "resultCode": "A0000",
      "resultCodeText": "Approved",
      "response": null,
      "responsetext": "CAPTURED",
      "authcode": "AXS425",
      "transactionid": "TRN_Xo4dpKfmx3OxSc9svd2ccI6OOnyB2I",
      "avsresponse": "N",
      "avsresponse_text": "No Match, No address or ZIP match",
      "cvvresponse": "M",
      "cvvresponse_text": "CVV2/CVC2 match",
      "orderid": null,
      "response_code": "100",
      "response_code_text": "Operation successful",
      "customer_vault_id": null,
      "emv_auth_response_data": null,
      "type": null
    },
    "source": "api",
    "scheduleReference": 0,
    "orgId": 123,
    "refundId": 0,
    "returnedId": 0,
    "chargebackId": 0,
    "retrievalId": 0,
    "invoiceData": {
      "invoiceNumber": null,
      "invoiceDate": null,
      "invoiceDueDate": null,
      "invoiceEndDate": null,
      "invoiceStatus": null,
      "invoiceType": null,
      "frequency": null,
      "paymentTerms": null,
      "termsConditions": null,
      "notes": null,
      "tax": null,
      "discount": null,
      "invoiceAmount": null,
      "freightAmount": null,
      "dutyAmount": null,
      "purchaseOrder": null,
      "firstName": null,
      "lastName": null,
      "company": null,
      "shippingAddress1": null,
      "shippingAddress2": null,
      "shippingCity": null,
      "shippingState": null,
      "shippingZip": null,
      "shippingCountry": null,
      "shippingEmail": null,
      "shippingPhone": null,
      "shippingFromZip": null,
      "summaryCommodityCode": null,
      "items": null,
      "attachments": null,
      "additionalData": null
    },
    "entrypageId": 0,
    "externalPaypointID": "",
    "isValidatedACH": false,
    "transactionTime": "2025-12-01T09:50:03.559",
    "customer": {
      "identifiers": null,
      "firstName": "David",
      "lastName": "Beckham",
      "companyName": "Driving School LLC",
      "billingAddress1": "Home Address",
      "billingAddress2": "",
      "billingCity": "",
      "billingState": "",
      "billingZip": "45157",
      "billingCountry": "US",
      "billingPhone": "+15555555555",
      "billingEmail": "example@payabli.com",
      "customerNumber": "C-90010",
      "shippingAddress1": "Home Address",
      "shippingAddress2": "",
      "shippingCity": "",
      "shippingState": "",
      "shippingZip": "45157",
      "shippingCountry": "US",
      "customerId": 4440,
      "customerStatus": 0,
      "additionalData": null
    },
    "splitFundingInstructions": null,
    "cfeeTransactions": [
      {
        "cFeeTransid": "3040-96dfa9a7c4ed4f82a3dd4a4a12ad28ae",
        "feeAmount": 5,
        "operation": "Sale",
        "refundId": 0,
        "responseData": {},
        "settlementStatus": 0,
        "transactionTime": "2025-12-01T09:50:03.559",
        "transStatus": 1
      }
    ],
    "transactionEvents": [
      {
        "transEvent": "Created",
        "eventData": "0HNHD68HATSUC:00000001",
        "eventTime": "2025-12-01T09:50:02.558651"
      },
      {
        "transEvent": "Approved",
        "eventData": "0HNHD68HATSUC:00000001",
        "eventTime": "2025-12-01T09:50:03.609111"
      }
    ],
    "riskStatus": "PASSED",
    "riskReason": "",
    "riskAction": "",
    "deviceId": "",
    "achSecCode": "",
    "achHolderType": "personal",
    "ipAddress": "255.255.255.255",
    "isSameDayACH": false,
    "walletType": null,
    "pendingFeeAmount": 0,
    "riskFlagged": false,
    "riskFlaggedOn": "2025-12-01T09:50:02.5474568",
    "riskActionCode": 0,
    "transAdditionalData": null
  },
  "token": null
}
```

**SDK Code**

```typescript CloudApproval
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient();
    await client.moneyIn.getpaidv2({
        body: {
            paymentDetails: {
                totalAmount: 100,
                serviceFee: 0,
            },
            paymentMethod: {
                device: "6c361c7d-674c-44cc-b790-382b75d1xxx",
                method: "cloud",
                saveIfSuccess: true,
            },
            customerData: {
                customerId: 4440,
            },
            entryPoint: "8cfec329267",
            ipaddress: "255.255.255.255",
        },
    });
}
main();

```

```python CloudApproval
from payabli import payabli, PaymentDetail, PayMethodCloud, PayorDataRequest

client = payabli()

client.money_in.getpaidv_2(
    payment_details=PaymentDetail(
        total_amount=100,
        service_fee=0,
    ),
    payment_method=PayMethodCloud(
        device="6c361c7d-674c-44cc-b790-382b75d1xxx",
        method="cloud",
        save_if_success=True,
    ),
    customer_data=PayorDataRequest(
        customer_id=4440,
    ),
    entry_point="8cfec329267",
    ipaddress="255.255.255.255",
)

```

```java CloudApproval
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.moneyin.requests.RequestPaymentV2;
import io.github.payabli.api.types.PayMethodCloud;
import io.github.payabli.api.types.PayMethodCloudMethod;
import io.github.payabli.api.types.PaymentDetail;
import io.github.payabli.api.types.PaymentMethod;
import io.github.payabli.api.types.PayorDataRequest;
import io.github.payabli.api.types.TransRequestBody;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient
            .builder()
            .build();

        client.moneyIn().getpaidv2(
            RequestPaymentV2
                .builder()
                .body(
                    TransRequestBody
                        .builder()
                        .paymentDetails(
                            PaymentDetail
                                .builder()
                                .totalAmount(100.0)
                                .serviceFee(0.0)
                                .build()
                        )
                        .paymentMethod(
                            PaymentMethod.of(
                                PayMethodCloud
                                    .builder()
                                    .method(PayMethodCloudMethod.CLOUD)
                                    .device(Optional.of("6c361c7d-674c-44cc-b790-382b75d1xxx"))
                                    .saveIfSuccess(Optional.of(true))
                                    .build()
                            )
                        )
                        .customerData(
                            PayorDataRequest
                                .builder()
                                .customerId(4440L)
                                .build()
                        )
                        .entryPoint("8cfec329267")
                        .ipaddress("255.255.255.255")
                        .build()
                )
                .build()
        );
    }
}
```

```ruby CloudApproval
require "payabli"

client = Payabli::Client.new

client.money_in.getpaidv_2(
  customer_data: {
    customer_id: 4440
  },
  entry_point: "8cfec329267",
  ipaddress: "255.255.255.255",
  payment_details: {
    total_amount: 100,
    service_fee: 0
  },
  payment_method: {
    method_: "cloud",
    save_if_success: true,
    cardexp: "string",
    cardnumber: "string"
  }
)

```

```csharp CloudApproval
using PayabliApi;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliApiClient();

        await client.MoneyIn.Getpaidv2Async(
            new RequestPaymentV2 {
                Body = new TransRequestBody {
                    PaymentDetails = new PaymentDetail {
                        TotalAmount = 100,
                        ServiceFee = 0
                    },
                    PaymentMethod = new PayMethodCloud {
                        Device = "6c361c7d-674c-44cc-b790-382b75d1xxx",
                        Method = PayMethodCloudMethod.Cloud,
                        SaveIfSuccess = true
                    },
                    CustomerData = new PayorDataRequest {
                        CustomerId = 4440L
                    },
                    EntryPoint = "8cfec329267",
                    Ipaddress = "255.255.255.255"
                }
            }
        );
    }

}

```

```go CloudApproval
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
)

func do() {
    client := client.NewClient()
    request := &payabli.RequestPaymentV2{
        Body: &payabli.TransRequestBody{
            PaymentDetails: &payabli.PaymentDetail{
                TotalAmount: 100,
                ServiceFee: payabli.Float64(
                    0,
                ),
            },
            PaymentMethod: &payabli.PaymentMethod{
                PayMethodCloud: &payabli.PayMethodCloud{
                    Device: payabli.String(
                        "6c361c7d-674c-44cc-b790-382b75d1xxx",
                    ),
                    Method: payabli.PayMethodCloudMethodCloud,
                    SaveIfSuccess: payabli.Bool(
                        true,
                    ),
                },
            },
            CustomerData: &payabli.PayorDataRequest{
                CustomerId: payabli.Int64(
                    int64(4440),
                ),
            },
            EntryPoint: payabli.String(
                "8cfec329267",
            ),
            Ipaddress: payabli.String(
                "255.255.255.255",
            ),
        },
    }
    client.MoneyIn.Getpaidv2(
        context.TODO(),
        request,
    )
}

```

```php CloudApproval
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\MoneyIn\Requests\RequestPaymentV2;
use Payabli\Types\TransRequestBody;
use Payabli\Types\PaymentDetail;
use Payabli\Types\PayMethodCredit;
use Payabli\Types\PayorDataRequest;

$client = new PayabliClient();
$client->moneyIn->getpaidv2(
    new RequestPaymentV2([
        'body' => new TransRequestBody([
            'paymentDetails' => new PaymentDetail([
                'totalAmount' => 100,
                'serviceFee' => 0,
            ]),
            'paymentMethod' => new PayMethodCredit([
                'saveIfSuccess' => true,
                'cardexp' => 'value',
                'cardnumber' => 'value',
            ]),
            'customerData' => new PayorDataRequest([
                'customerId' => 4440,
            ]),
            'entryPoint' => '8cfec329267',
            'ipaddress' => '255.255.255.255',
        ]),
    ]),
);

```

```swift CloudApproval
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "paymentDetails": [
    "totalAmount": 100,
    "serviceFee": 0
  ],
  "paymentMethod": [
    "device": "6c361c7d-674c-44cc-b790-382b75d1xxx",
    "method": "cloud",
    "saveIfSuccess": true
  ],
  "customerData": ["customerId": 4440],
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/MoneyIn/getpaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```