14. Payments
10.1 Overview
CPX then processes the payments using the preferred payment type i.e Card, ACH, CHECK as configured for the supplier.
A buyer can upload a single PIF (Payment instruction file) which can be a CSV, Fixed width or Tab separate file. The fields in the file can be customized per buyer. The file contains all payments that have to be made. It also contains invoicing information. The buyers can request to group payments in the file and collect funds for it from the buyer in a batch. Buyer can also setup payments using the portal or our APIs.
The supplier enablement team runs campaigns for each method with the first campaign for the virtual card. Here, they call the supplier and explain to them about the program and the benefit of moving to a Card payment. In case Card campaign is not successful, they may run a campaign for ACH and so on. For successfully executed campaigns, the information is shared with CPX Operations, who then update the payment type for the supplier to be the same as the successfully executed campaign and update all other necessary information. Currently, the supplier enablement team works on Salesforce. The supplier information is fed into the CPX system operationally. Here, the key requirement is to build a two-way communication between CPX and Salesforce for supplier information through API integration. For each supplier, the default payment type can be configured. The suppliers can be uploaded in Bulk as well.
In CPX We use different vendors to generate virtual cards for each supplier and process payments to the supplier. The vendor generates a virtual card & shares details like card token, expiry date etc. Each vendor has different integration that has to be mapped to our standard implementation.
A. Our current vendors for card processing are:
- a. Galileo - This is presented as Falcon in the system.
- b. DXC - This is presented as Braves in the system. Currently, Falcon is used for the majority of buyers but the new narrative is to gradually switch all buyers to Braves, as DXC offers better terms of use and rates for CPX.
B. Card Options offered by CPX:
- a.Standard Single Use - Can be used once and billed by the exact amount on card
- b. Standard Multi Use - Can be billed many times with different amounts, within the balance limit. Can’t be topped up
- c. Lodge Cards - Can be billed many times with different amounts, within the balance limit. Can be topped up.
Payment Instruction File
- 1. There is a standard PIF File that is only used by one institution i.e. Mineral Tree. For the rest of the institutions, we have a customized mapping available.
2. There are also other buyer-specific file types - ( SUNGART, LINCOLN, HARRIS_HLG, etc.)
10.2 Attributes
Field | Sub Field | Type | Description |
---|---|---|---|
nid | string | unique id between a respected network and an institution | |
fid | string | unique id between a institution and a respective buyer. | |
buyerId | string | internal id of the buyer | |
supplierId | string | unique id of the supplier | |
supplierName | string | name of the supplier | |
amount | Integer | amount of the payment | |
transactionId | string | transaction id of the payment | |
accountType | string | payment method | |
fileDate | String | file date of the payment getting created [YYYY-MM-DD] | |
checkInsert | Object | Attachment to be sent as PDF Insert along with check payment | |
attachmentId | string | Attachment Id for insert | |
base64Content | string | Content of insert in base64 format | |
fileName | string | Name of insert file | |
printType | string(Enum) | Type of printing to be used for insert
| |
deliveryMode | enum | Mode of delivery to be used for check payment STANDARD/OVERNIGHT/TWODAY | |
reference1 | string | Reference 1 details | |
reference2 | string | Reference 2 details | |
reference3 | string | Reference 3 details | |
reference4 | string | Reference 4 details | |
reference5 | string | Reference 5 details | |
emailNotes | string | Email notes to be passed along with payment | |
scheduleDate | string | Date in future to schedule the payment(upto 90 days in future) | |
bankRoutingNumber | String | Routing number of supplier’s bank account. | |
bankAccountNumber | String | Account number of the supplier’s receiving account. | |
partialPaymentIndicator | string | ||
paymentExpirationDate | String | Expiry Date of the payment getting created [YYYY-MM-DD] | |
checkRemittanceTemplateId | string | Id of custom check remittance to be used | |
checkNumber | integer | number for the check to be issued. | |
templateId | String | Card specific template ID Galileo - 4 digit product Id DXC - 16 digit template If | |
accountId | string | Id of account to be used ACH/Check/VCN - Id of bank account to be used Lodge - Id of Lodge card to be used. Plastiq – Token of External Card to be used. | |
supplierAddressLine1 | string | address of supplier | |
supplierAddressLine2 | string | address of supplier | |
supplierCity | string | city of supplier | |
supplierState | string | state of supplier | |
supplierZip | string | postal code of supplier | |
supplierEmail | string | email address of supplier | |
invoiceNumbers | array of strings | Invoice number associated to the payment | |
invoiceDates | array of strings | Date associated to invoice | |
invoiceAmounts | array of float | Amount associated to invoice | |
invoiceOpenAmounts | array of float | Open Amount of the invoice | |
invoiceTotalDues | array of float | Total due of invoice | |
invoiceDescriptions | array of string | Description of invoice | |
invoiceCreditAmounts | array of float | Credit amount of invoice | |
invoiceCreditNumbers | array of string | Credit Number of Invoice | |
invoiceCreditMemoNotes | array of string | Credit Memo note of Invoice | |
invoiceDiscountAmounts | array of float | Discount amount of invoice | |
invoiceLocations | array of string | Location of Invoice | |
invoiceAttachments | array of string | Invoice attachment ID to upload invoice as PDF | |
poNumbers | array of string | PO number of invoice | |
poDates | array of string | PO Date of invoice | |
udf1-50 | array of string | Individual UDF values for each invoice can be passed if UDFs are set in custom PIF associated to buyer | |
virtualCardNumber | String | Card Number of Virtual card | |
securityCode | String | Security code/CVV of the card | |
vcnStatus | String | Status of VCN | |
expirationDate | String | Expiration date of VCN | |
expirationString | String | Expiration string of VCN | |
nameOnCard | String | Name on the card | |
payload | Object | Payment payload | |
id | |||
_scroll_id | String | The id for the search context | |
aggregations | Object | Total Aggregate amount of the records fetched | |
totalAmount
| Object Integer | Total Amount Total Amount value | |
settledCount
| Object Integer | Count of settled transactions | |
settledAmount
| Object Integer | Total Settled Amount Value of settled amount | |
totalRecords | Integer | Total number of records available | |
totalType | String | Whether the records returned are an exact or in range | |
recordCount | Integer | Number of records fetched | |
records | Array of objects | Details of the records fetched | |
fileDate | String | Date and time when the payment file was uploaded | |
transactionId | String | Transaction ID passed by user | |
accountType | String(Enum) | Payment method passed for payment | |
emailNotes | String | Email notes passed with the payment | |
reference1 | String | Value of Reference 1 | |
reference2 | String | Value of Reference 2 | |
reference3 | String | Value of Reference 3 | |
reference4 | String | Value of Reference 4 | |
reference5 | String | Value of Reference 5 | |
acl | Array | Access control list for the payment | |
buyerId | String | Id of buyer to which payment is associated | |
supplierId | String | Id of supplier to which payment is associated | |
holdAmount | Float | Settlement amount for DXC payment | |
pirReason | String | DXC reconciliation data | |
holdTransCode | String | Code for transaction | |
vcnAccountNumber | String | Last 4 digits of bank account | |
vcnReferenceNumber | String | Reference number of card | |
postDate | String | Settlement date | |
purchaseDate | String | Payment process date | |
statusDate | String | Date and time when the status was updated | |
paymentStatus | String | Status of payment | |
pifTransactionId | String | Internal Transaction Id | |
previousPaymentStatus | String | Status previous to current status of payment | |
created | String | Date and time when payment was created | |
creator
| Object
| Id of creator of payment Username of creator of payment | |
modified | String | Date and time when payment was last modified | |
modifier
| Object
| Id of modifier of payment Username of modifier of payment | |
id | String | Id of payment | |
amount | String | Amount of payment | |
paymentMethod | String | Payment Method - CARD/ACH/CHECK/WIRE | |
paymentAuthMessage | String | Reason of payment status in case of error | |
achTransactionType | String | Type of ACH transaction - Debit/Credit | |
transactionDate | String | Date of payment transaction | |
importDate | String | Date and time when payment file was imported to CPX | |
filePath | String | File path for payment file | |
fileId | String | Id of payment file | |
isProxyPay | Boolean | If Proxy Pay is enabled for supplier so that supplier doesnt receive card details | |
createdFrom | String | Payment was created via which platform | |
hasInvoices | Boolean | Whether payment has invoice information | |
invoiceCount | String | Count of invoices associated with payment | |
invoiceUploadCount | String | Count of invoices uploaded with payment | |
pending | String | Date and time when status was changed to pending | |
sent | String | Date and time when status was changed to sent | |
ready | String | Date and time when status was changed to ready | |
scheduled | String | Date and time when status was changed to scheduled | |
settled | String | Date and time when status was changed to settled | |
authorized | String | Date and time when status was changed to authorized | |
emailSent | String | Date and time when status was changed to email sent | |
failed | String | Date and time when status was changed to failed | |
cancelled | String | Date and time when status was changed to cancelled | |
expired | String | Date and time when status was changed to expired | |
vcnEmailSentDate | String | Date and time when email was sent for VCN payment | |
paymentReference | String | Reference details for payments
| |
vcnBalance | String | Balance of card in real time | |
accountId | String | Id of account to be used ACH/Check/VCN - Id of bank account to be used Lodge - Id of Lodge card to be used | |
walletId | String | ID of virtual wallet created for buyer | |
wireEnabled | Boolean | If Wire is enabled and underwriting is approved | |
wireRequested | Boolean | If wire is enabled but underwriting is requested | |
wire
| Object
| Wire billing and underwriting information Billing method set for Wire - Good funds Wallet ID associated to debit delayDays set for wire - no delay Debit Method set for Wire - Debit for each transaction | |
network
| Object
| Network details associated to Fee
| |
institution
| Object
| Institution details associated to Fee
| |
buyer
| Object
| Buyer for which fee transaction is created
| |
supplier
| Object
| Supplier details
| |
tags | Array | Tags associated to Payment | |
xmid | String | ||
vcnLink
| Object
| VCN Link for Payment
| |
vcnStatus | String | Status of card | |
achDebitId | String | Id of ACH debit created for payment | |
merchantId | String | Users Merchant ID on MXM | |
checkNumber | String | Check number for Check payment | |
isSingleUse | Boolean | If payment is created with single use card | |
cardEntityId | String | Hash Id of Card | |
scheduleDate | String | Date of payment scheduled | |
securityCode
| Object
| Security code set for payment
| |
expirationDate | String | Expiration date of payment | |
originalAmount | String | Transaction Amount | |
vcnTokenNumber | String | Token Number for VCN payment | |
hasPendingDebit | Boolean | If the payment has a debit pending | |
paymentAuthCode | String | Auth code on MXM/Ach.com | |
paymentCardType | String | Card type of the card account on MXM | |
expirationString | String | Expiration date and time for payment | |
totalDebitAmount | String | Total amount debited for the payment | |
externalAccountId | String | Id of external account for payment | |
virtualCardNumber
| Object
| Card Number generated
| |
partialPaymentIndicator | String | If Payment is partial or not | |
paymentStatusHistory | Array | History of payment status | |
paymentAccountNumber | String | Last 4 of the account for Reference | |
buyerBillingProduct | String | Type of Billing for Buyer Card/Check/ACH | |
hasFailedOver | Boolean | If card has expired and balance payment has to be sent via different method | |
terminatedAmount | Float | Last available balance on card before cancellation or expiry | |
cardRules
| Object
| Card Rules associated to payment
| |
authorization
| Object
| Authorization received for the payment
| |
authorizations
| Array of Objects | List of authorizations received for payment
| |
settlement
| Object
| Settlement received for the payment
| |
settlements
| Array of objects | List of settlements received for payment
| |
vcnReference | String | Payment Reference Number for galileo, CPX generated reference for DXC cards | |
paymentProcessDate | String | Date on which payment gets processed | |
vcnLinkAccessedDate | String | Last date when VCN link was accessed | |
vcnAccountExpirationDate | String | Date when card expires | |
vcnEmailReminderSendDate | String | Date when the reminder email is to be sent next | |
vcnEmailReminderLastSentDate | String | Date and time when VCN email reminder was last sent | |
checkProcessor | String | Processor for Check Payment - CHK/MCK/EMCK | |
isFailOverTransaction | Boolean | If transaction is a failover transaction | |
originalFailOverTransactionId | String | Id of transaction for which fail over transaction was created | |
failedPaymentNotificationSent | Boolean | If notification was sent for failed payment | |
isGoodFundsBuyerReturn | Boolean | Transaction category for CPX | |
isNewTransaction | Boolean | If Transaction is system generation |
10.3 Operations
10.3.1. Create Payments
10.3.2. Cancel Payment
10.3.3. Get list of Payments
10.3.4. Get list of Payments for a Supplier
10.3.5. Get list of Payments for Export
10.3.6. Get list of Payments for a supplier for Export
10.3.7. Decrypt Card Data for Payment
10.3.8. Get VCN Expiration for a Card
10.3.9. Cancel VCN Card
10.3.10. Get Settlement Data for a Payment
10.3.11. Search all payments from a transactionId
10.3.12. Get Payments with Card Token
10.3.13. Get list of Payments for a Buyer for Export
10.3.14. Gets the Payment Status History of a Payment for export
10.3.15. Gets the Payment Status History of a Payment
10.3.16. Get Fail Over Transactions for the given Transaction Id
10.3.17. Get supplier VCN link payment
Updated 3 days ago