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

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

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

Understanding the Response

Invoice-Level Fields

Invoice Attempts Array

The invoiceAttempts array contains all payment attempts for this invoice. Each attempt includes:

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