Skip to main content

What is Get Invoice Details?

The Get Invoice Details endpoint returns complete information about a specific invoice, including:
  • All payment attempts (every try, not just the latest)
  • Full payment method information
  • Invoice line items
  • Processor responses and transaction IDs
  • Customer information (if linked)
When to use it:
  • Customer support: Looking up a specific invoice
  • Debugging: Understanding why a payment failed
  • Reconciliation: Getting all transaction details
  • Reporting: Detailed invoice information for accounting
  • After getting invoice list: Get details for specific invoices
Tip: Use Get Invoices to get a list, then use this endpoint to get details for specific invoices.

API Endpoint

GET {{Api Root}}/api/Invoices/{invoiceId}
Replace:
  • {{Api Root}} with api.revolv3.com (production) or api-sandbox.revolv3.com (sandbox)
  • {invoiceId} with the actual invoice ID (e.g., 302756)

Example Request

GET {{Api Root}}/api/Invoices/302756

Understanding Invoice Attempts

An invoice attempt is each time Revolv3 tries to process the payment. An invoice can have multiple attempts if:
  • The first attempt failed and Revolv3 retried
  • The payment was recycled (for subscriptions)
To find the latest attempt: Check the invoiceAttemptDate in the invoiceAttempts array—the most recent date is the latest attempt.

Sample Response

{
  "invoiceId": 302756,
  "parentInvoiceId": null,
  "customerId": null,
  "merchantInvoiceRefId": "ABC309500654810",
  "paymentMethod": {
    "paymentMethodId": 6469,
    "billingAddressId": 7551,
    "billingFirstName": "Joe",
    "billingLastName": "Smith",
    "merchantPaymentMethodRefId": null,
    "billingAddress": {
      "addressId": 7551,
      "addressLine1": "381 Forest Ave. Suite C",
      "addressLine2": null,
      "city": "Laguna Beach",
      "state": "CA",
      "postalCode": "92651",
      "phoneNumber": null,
      "email": null,
      "country": "US"
    },
    "paymentMethodAchDetails": null,
    "paymentMethodCreditCardDetails": {
      "binNumber": "444433",
      "paymentLast4Digit": "1111",
      "paymentExpirationDate": "0330"
    }
  },
  "invoiceStatus": "Paid",
  "subtotal": 1.03,
  "tax": 0.00,
  "total": 1.03,
  "billingDate": "9/17/2024",
  "merchantLegalName": "Revolv3",
  "merchantCustomerRefId": null,
  "customerFirstName": null,
  "customerLastName": null,
  "subscriptionId": null,
  "installmentId": null,
  "eligibilityFailReason": null,
  "merchantSubscriptionRefId": null,
  "networkTransactionId": "197066166170419",
  "invoiceLineItems": [],
  "invoiceAttempts": [
    {
      "invoiceAttemptId": 139859,
      "amount": 1.03,
      "invoiceAttemptStatus": "Success",
      "invoiceAttemptDate": "2024-09-17T18:40:38.107",
      "paymentProcessor": "WorldPay",
      "processorTransactionId": "83995072261509527",
      "responseCode": "000",
      "responseMessage": "Approved",
      "paymentMethod": {
        "paymentMethodId": 6469,
        "billingAddressId": 7551,
        "billingAddress": {
          "addressId": 7551,
          "addressLine1": "381 Forest Ave. Suite C",
          "addressLine2": null,
          "city": "Laguna Beach",
          "state": "CA",
          "postalCode": "92651",
          "phoneNumber": null,
          "email": null,
          "country": "US"
        },
        "billingFirstName": "Joe",
        "billingLastName": "Smith",
        "merchantPaymentMethodRefId": null,
        "paymentMethodAchDetails": null,
        "paymentMethodCreditCardDetails": {
          "binNumber": "444433",
          "paymentLast4Digit": "1111",
          "paymentExpirationDate": "0330"
        }
      },
      "eligibilityCheckOrderCode": null
    }
  ]
}

Understanding the Response

Invoice-Level Fields

FieldDescription
invoiceIdRevolv3’s unique identifier for this invoice
parentInvoiceIdIf this is a refund, links to the original invoice
customerIdCustomer ID if linked to a customer record
merchantInvoiceRefIdYour internal invoice/order reference ID
invoiceStatusCurrent invoice status (Paid, Pending, Noncollectable, etc.)
subtotalInvoice amount before tax
taxTax amount
totalTotal invoice amount
billingDateDate the invoice was billed
networkTransactionIdTransaction ID from the card network (important for disputes)
subscriptionIdSubscription ID if this invoice is from a subscription
installmentIdInstallment ID if this is part of an installment plan

Invoice Attempts Array

The invoiceAttempts array contains all payment attempts for this invoice. Each attempt includes:
FieldDescription
invoiceAttemptIdUnique ID for this specific attempt
amountAmount attempted in this try
invoiceAttemptStatusResult: Success, Fail, Pending, etc.
invoiceAttemptDateWhen this attempt was made (use this to find the latest)
paymentProcessorWhich processor handled this attempt (WorldPay, Adyen, etc.)
processorTransactionIdTransaction ID from the processor
responseCodeProcessor’s response code (e.g., “000” = approved)
responseMessageProcessor’s response message (e.g., “Approved”, “Declined”)
paymentMethodPayment method used for this attempt

Finding the Latest Attempt

To find the most recent payment attempt:
  1. Look at the invoiceAttempts array
  2. Find the attempt with the latest invoiceAttemptDate
  3. Check its invoiceAttemptStatus to see if it succeeded or failed
Example: If you have 3 attempts with dates:
  • 2024-09-17T18:40:38 (Success) ← Latest
  • 2024-09-17T18:40:35 (Fail)
  • 2024-09-17T18:40:30 (Fail)
The latest attempt succeeded.

Real-World Use Cases

Use Case 1: Customer Support

Scenario: Customer says “I was charged twice” Solution:
  1. Look up invoice by merchantInvoiceRefId (their order number)
  2. Check invoiceAttempts array
  3. See if there are multiple successful attempts
  4. If yes, one might be a duplicate—process a refund

Use Case 2: Debugging Failed Payment

Scenario: Payment failed, need to know why Solution:
  1. Get invoice details
  2. Look at the latest attempt in invoiceAttempts
  3. Check invoiceAttemptStatus (probably “Fail”)
  4. Check responseMessage for the reason (e.g., “Insufficient Funds”)
  5. Use this information to help the customer

Use Case 3: Reconciliation

Scenario: Matching Revolv3 invoices with bank deposits Solution:
  1. Get invoice details
  2. Use networkTransactionId to match with bank statements
  3. Use processorTransactionId for processor-specific reconciliation
  4. Verify amounts match (total field)

Use Case 4: Subscription Payment History

Scenario: Customer wants to see all their subscription payments Solution:
  1. Get invoices filtered by subscriptionId
  2. For each invoice, get details to show full payment history
  3. Display all attempts so customer can see retries

Best Practices

  1. Store invoice IDs: When you create an invoice, save the invoiceId for later lookups
  2. Check latest attempt: Always look at the most recent attempt for current status
  3. Store transaction IDs: Save networkTransactionId and processorTransactionId for reconciliation
  4. Handle multiple attempts: Your code should handle invoices with multiple attempts
  5. Use for debugging: This endpoint is great for troubleshooting payment issues

Common Questions

Q: How do I know which attempt is the latest? A: Sort the invoiceAttempts array by invoiceAttemptDate (most recent first). The first one is the latest. Q: Can an invoice have multiple successful attempts? A: Typically no—once an invoice is paid, further attempts usually don’t happen. Q: What if there are no attempts? A: The invoice might be pending or the payment hasn’t been processed yet. Check the invoiceStatus. Q: How do I get processor-specific details? A: Check the processorTransactionId and responseCode/responseMessage in the attempt. For raw processor responses, see Processor Raw Response.

Next Steps